Merhabalar. Bir kod buldum ve değiştiriyorum fakat kodda bir hata var. Kamera’da iki kişiyi veya iki objeyi birden aynı anda algılayıp yazdıramıyor. İndex hatası veriyor. Ne yaptıysam çözemedim. Gerekli Dosyalar burada. Dosya boyutu çok büyük değil ve kurması da o kadar zor değil.
Kod ise şöyle:
import cv2
import numpy as np
import time
thres = 0.45 # Threshold to detect object
nms_threshold = 0.2
cap = cv2.VideoCapture(0)
# cap.set(3,1280)
# cap.set(4,720)
# cap.set(10,150)
classNames = []
classFile = 'coco.names'
with open(classFile,'rt') as f:
classNames = f.read().rstrip('n').split('n')
# print(classNames)
configPath = 'ssd_mobilenet_v3_large_coco_2020_01_14.pbtxt'
weightsPath = 'frozen_inference_graph.pb'
net = cv2.dnn_DetectionModel(weightsPath, configPath)
net.setInputSize(320, 320)
net.setInputScale(1.0 / 127.5)
net.setInputMean((127.5, 127.5, 127.5))
net.setInputSwapRB(True)
while True:
success, img = cap.read()
classIds, confs, bbox = net.detect(img, confThreshold=thres)
bbox = list(bbox)
confs = list(np.array(confs).reshape(1, -1)[0])
confs = list(map(float, confs))
# print(type(confs[0]))
# print(confs)
indices = cv2.dnn.NMSBoxes(bbox, confs, thres, nms_threshold)
indices = [[el] for el in indices]
indices = np.array(indices)
for i in indices:
print(classIds[i][0]- 1)
if classIds[i][0] != 0 and classIds[i][0] < 81:
i = i[0]
box = bbox[i]
x, y, w, h = box[0], box[1], box[2], box[3]
cv2.rectangle(img, (x, y), (x + w, h + y), color=(0, 0, 255), thickness=1)
try:
cv2.putText(img, classNames[classIds[i] - 1].upper(), (box[0] + 10, box[1] + 30, box[2] + 50), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 255), 1)
except:
print('Sü')
cv2.imshow('Output', img)
cv2.waitKey(30)
Hata aldığım kısım işe şurası:
try:
cv2.putText(img, classNames[classIds[i] - 1].upper(), (box[0] + 10, box[1] + 30, box[2] + 50), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 255), 1)
except:
print('Sü')