#python #yolo
Вопрос:
Во-первых, я прошу прощения за неправильные слова.
Я новичок в кодировании и хочу использовать Yolo для своего проекта. Я написал код, и он хорошо работает, но сегодня я хотел запустить свой код, но он не работает. Я использую свой телефон в качестве веб-камеры с приложением DroidCam. Раньше это не создавало никаких проблем, но сегодня это произошло.
Проблема в том, что я хочу использовать свой телефон в качестве веб-камеры, но он не работал. Я могу использовать встроенную камеру моего ноутбука с кодом без каких-либо проблем. Я думал, что проблема в OpenCV, и я обновил его, и теперь это создает другую проблему
перед обновлением проблема на 41-й строке.
height, width, channels = frame.shape
и код:
import cv2 import numpy as np import time import serial ser = serial.Serial("COM3",9600) #Kilitlenme sayısını arttırmak için gerekli tanımlamalar(!) zaman = 0 yakalamaAnı = 0 kilitlenmeSayısı = 0 kilit = 0 #i'yi 0 olarak tanımlamamızın sebebi kilitlenme mekanizmasının çalışması içindir. i = 0 # YOLO'yu yükleme net = cv2.dnn.readNet("yolo-coco/yolov4-tiny-obj_last.weights", "yolo-coco/yolov4-tiny-obj.cfg") classes = [] with open("coco.names", "r") as f: classes = [line.strip() for line in f.readlines()] layer_names = net.getLayerNames() output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] #colors = np.random.uniform(0, 255, size=(len(classes), 3)) # Kamera'yı açma cap = cv2.VideoCapture(0) font = cv2.FONT_HERSHEY_PLAIN starting_time = time.time() frame_id = 0 while True: _, frame = cap.read() frame_id = 1 #cv2.resizeWindow('frame', 640,480) #Alttaki iki satır kod çizdiğim kare ve ortadaki noktanın kodu. cv2.rectangle(frame,(160,48),(480,432),(0,255,0),2) cv2.line(frame,(320,240),(320,240),(255,255,255),2) height, width, channels = frame.shape # İHA tanımlama blob = cv2.dnn.blobFromImage(frame, 0.00392, (192, 192), (0, 0, 0), True, crop=False) net.setInput(blob) outs = net.forward(output_layers) # Showing informations on the screen class_ids = [] confidences = [] boxes = [] for out in outs: for detection in out: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence gt; 0.2: # İHA tanımlandığı zamanki konumu center_x = int(detection[0] * width) center_y = int(detection[1] * height) w = int(detection[2] * width) h = int(detection[3] * height) # Tanımlama kutusunun konumu x = int(center_x - w / 2) y = int(center_y - h / 2) boxes.append([x, y, w, h]) confidences.append(float(confidence)) class_ids.append(class_id) indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.4, 0.3) #Şuan ki saniyeyi belirleyelim zaman=int(time.time()) #İHA tanımlandığı zaman çalışacak kod for i in range(len(boxes)): if i in indexes: #Kilitlenme sayısını arttırmak için gerekli kodlar if kilit == 0: yakalamaAnı = zaman 4 kilit = 1 if zaman == yakalamaAnı: kilitlenmeSayısı = 1 kilit = 0 cv2.putText(frame,"Yakalama Durumu = IHA Var", (400,15),font,1,(0,255,0),1) x, y, w, h = boxes[i] a = int(x w / 2) b = int(y h / 2) data = "a{0:d}b{1:d}Z".format(a,b) ser.write(bytes(str(data), "utf-8")) print(data) label = str(classes[class_ids[i]]) confidence = confidences[i] color = (0,0,255)#colors[class_ids[i]] cv2.rectangle(frame, (x, y), (x w, y h), color, 1) cv2.line(frame,(a,b),(320,240),(255,255,255),1) #Yakalanan ihadan ortaya çizgi. #cv2.rectangle(frame, (x, y), (x w, y 30), color, -1) #cv2.putText(frame, label " " str(round(confidence, 2)), (x, y 30), font, 2, (255,255,255), 3) if not i in range(len(boxes)): yakalamAnı = 0 kilit = 0 cv2.putText(frame,"Yakalama Durumu = IHA Yok", (400,15),font,1,(0,0,255),1) cv2.putText(frame, "Basarili kilitlenme = " str(kilitlenmeSayısı), (400,35),font,1,(0,255,255),1) #FPS ölçümü için olan kısım elapsed_time = time.time() - starting_time fps = frame_id / elapsed_time cv2.putText(frame, "FPS: " str(round(fps, 2)), (5, 15), font, 1, (0, 0, 255), 1) cv2.imshow("Kamera", frame) key = cv2.waitKey(1) if key == 27: break cap.release() cv2.destroyAllWindows()
Я написал код выше. И этот код нуждается в arduino для работы. Я попробовал использовать обычный код(это означает код, который не нуждается в arduino).
и вот в чем проблема, с которой я сталкиваюсь:
Traceback (most recent call last): File "G:Sarı Flash(KINGSTON)OtonomAraçlardenemelerSeri_Iletisimseri_iletisim_ile_isleme.py", line 22, in lt;modulegt; output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] File "G:Sarı Flash(KINGSTON)OtonomAraçlardenemelerSeri_Iletisimseri_iletisim_ile_isleme.py", line 22, in lt;listcompgt; output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] IndexError: invalid index to scalar variable.