Он!p о Python YoloV4-крошечный

#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.