国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Es k?nnen keine Druckergebnisse von der YOLOv4-Python-Objekterkennung abgerufen werden. PHP gibt einen leeren Wert zurück
P粉275883973
P粉275883973 2023-08-28 12:41:17
0
1
877
<p>Ich verwende dieses Git-Paket, um die Zielerkennung mit YOLOv4 in Python auszuführen</p> <pre class="brush:php;toolbar:false;">https://github.com/erentknn/yolov4-object-detection</pre> <p>Das Skript l?uft einwandfrei und ich kann die gefundenen Ziele im Terminal sicher ausdrucken, aber wenn ich es aus PHP ausführe, sind die zurückgegebenen Ergebnisse leer. Ich sch?tze, es k?nnte daran liegen, dass das PHP-Skript auf den Abschluss von Python wartet und die Ergebnisse nicht in Echtzeit zurückgibt. Ich habe versucht, ein W?rterbuch zu erstellen, um die Ergebnisse zu speichern und am Ende zurückzugeben, aber es ist immer noch leer. Früher konnte ich das in YOLOv3 problemlos machen, bin mir aber nicht sicher, was sich in Version 4 ge?ndert hat. </p> <p>Bearbeiten: Nach weiteren Tests kann ich die Ergebnisse nicht einmal in eine Datei schreiben, was seltsam ist. Wenn ich vom Terminal aus laufe, kann ich. </p> <p>EDIT: Wenn ich var_dump($output) verwende, wird NULL zurückgegeben. Nach dem Einschalten des Debuggens werden keine zus?tzlichen Informationen zurückgegeben.</p> <p>我正在運(yùn)行腳本 - yolo_video.py</p> <pre class="brush:php;toolbar:false;"># Beispielverwendung: python3 yolo_video.py -i video.mp4 -o video_out.avi argparse importieren Globus importieren Importzeit Protokollierung importieren aus pathlib import Path cv2 importieren numpy als np importieren logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) formatter = logging.Formatter("%(asctime)s-%(name)s-%(message)s") stream_handler = logging.StreamHandler() stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) parser = argparse.ArgumentParser() parser.add_argument("-i", "--input", type=str, default="", help="video.mp4") parser.add_argument("-o", "--output", type=str, default="", help="Pfad zur (optionalen) Ausgabevideodatei") parser.add_argument("-d", "--display", type=int, default=1, help="Ausgabe anzeigen oder nicht (1/0)") parser.add_argument("-ht", "--height", type=int, default=1200, help="H?he der Ausgabe") parser.add_argument("-wt", "--width", type=int, default=700, help="Breite der Ausgabe") parser.add_argument("-c", "--confidence", type=float, default=0.8, help="Konfidenzschwelle") parser.add_argument("-t", "--threshold", type=float, default=0.6, help="nicht-maximaler Unterdrückungsschwellenwert") args = parser.parse_args() logger.info("Geparste Argumente") CONFIDENCE_THRESHOLD = args.confidence NMS_THRESHOLD = args.threshold wenn nicht Path(args.input).exists(): raise FileNotFoundError("Pfad zur Videodatei ist nicht vorhanden.") vc = cv2.VideoCapture(args.input) Gewichte = glob.glob("yolo/*.weights")[0] labels = glob.glob("yolo/*.txt")[0] cfg = glob.glob("yolo/*.cfg")[0] logger.info("Verwendung von {} Gewichtungen, {} Konfigurationen und {}labels.".format(weights, cfg, labels)) class_names = list() mit open(labels, "r") as f: class_names = [cname.strip() für cname in f.readlines()] COLORS = np.random.randint(0, 255, size=(len(class_names), 3), dtype="uint8") net = cv2.dnn.readNetFromDarknet(cfg, Gewichte) net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA) net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA) Layer = net.getLayerNames() Layer = [Layer[i[0] - 1] für i in net.getUnconnectedOutLayers()] Autor = Keine def discover(frm, net, ln): (H, W) = frm.shape[:2] blob = cv2.dnn.blobFromImage(frm, 1 / 255.0, (416, 416), swapRB=True, crop=False) net.setInput(blob) start_time = time.time() LayerOutputs = net.forward(ln) end_time = time.time() Kisten = [] classIds = [] Konfidenzen = [] für die Ausgabe in LayerOutputs: zur Erkennung in der Ausgabe: Punkte = Erkennung[5:] classID = np.argmax(scores) Vertrauen = Ergebnisse[Klassen-ID] wenn Konfidenz > CONFIDENCE_THRESHOLD: box = Erkennung[0:4] * np.array([W, H, W, H]) (centerX, centerY, width, height) = box.astype("int") x = int(centerX - (width / 2)) y = int(centerY - (height / 2)) boxen.append([x, y, int(width), int(height)]) classIds.append(classID) confidences.append(float(confidence)) idxs = cv2.dnn.NMSBoxes(Boxen, Konfidenzen, CONFIDENCE_THRESHOLD, NMS_THRESHOLD) wenn len(idxs) > 0: für i in idxs.flatten(): (x, y) = (Boxen[i][0], Boxen[i][1]) (w, h) = (Boxen[i][2], Boxen[i][3]) color = [int(c) für c in COLORS[classIds[i]]] cv2.rectangle(frm, (x, y), (x + w, y + h), color, 2) text = "{}: {:.4f}".format(Klassennamen[Klassen-IDs[i]], Konfidenzen[i]) # 這里我打印結(jié)果(在終端中工作) print("gefunden") print(confidences[i]) print(class_names[classIds[i]]) cv2.putText( frm, Text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2 ) fps_label = "FPS: %.2f" % (1 / (end_time - start_time)) cv2.putText( frm, fps_label, (0, 25), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2 ) w?hrend cv2.waitKey(1) < 1: (gepackt, Frame) = vc.read() falls nicht ergriffen: brechen Frame = cv2.resize(Frame, (args.height, args.width)) erkennen(Rahmen, Netz, Ebene) wenn der Autor nicht None ist: write.write(frame)</pre> <p>然后在我的PHP-Version</p> <pre class="brush:php;toolbar:false;">$command = escapeshellcmd('python3 yolo_video.py -i video.mp4 -o video_out.avi'); $output = shell_exec($command); echo $output;</pre> <p>
P粉275883973
P粉275883973

Antworte allen(1)
P粉360266095

cv2.waitKey在一般情況下不起作用,具體取決于您的機(jī)器是PHP還是jupyter notebook。

我在我的機(jī)器上嘗試了這個(gè),并解決了問(wèn)題:

while(vc.isOpened()):

if frame is None:
        break

或者

if not grabbed:
        break

當(dāng)視頻播放完畢時(shí),腳本將停止。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage