[英]Error when trying to run code based on PysimpleGUIqt
I am trying to run a code using PysimpleGUIqt but it gives following error:我正在尝试使用 PysimpleGUIqt 运行代码,但它给出了以下错误:
I have tried to install windows
but getting following error:我尝试安装
windows
但收到以下错误:
If I try to install window
it will be installed but error remains.如果我尝试安装
window
它将被安装但错误仍然存在。 I even installed pyqt5 but nothing changed.我什至安装了 pyqt5 但没有任何改变。 Have no idea how to solve it.
不知道如何解决它。 The whole code is attached below for your reference which is originally taken from here :
整个代码附在下面供您参考,最初取自此处:
import numpy as np
import argparse
import time
import cv2
import os
import PySimpleGUIQt as sg
layout = [
[sg.Text('YOLO')],
[sg.Text('Path to image'), sg.In(r'C:/Python/PycharmProjects/YoloObjectDetection/images/baggage_claim.jpg',size=(40,1), key='image'), sg.FileBrowse()],
[sg.Text('Yolo base path'), sg.In(r'yolo-coco',size=(40,1), key='yolo'), sg.FolderBrowse()],
[sg.Text('Confidence'), sg.Slider(range=(0,10),orientation='h', resolution=1, default_value=5, size=(15,15), key='confidence')],
[sg.Text('Threshold'), sg.Slider(range=(0,10), orientation='h', resolution=1, default_value=3, size=(15,15), key='threshold')],
[sg.OK(), sg.Cancel(), sg.Stretch()]
]
win = sg.Window('YOLO',
default_element_size=(14,1),
text_justification='right',
auto_size_text=False).Layout(layout)
event, values = win.Read()
args = values
win.Close()
args['threshold'] = float(args['threshold']/10)
args['confidence'] = float(args['confidence']/10)
labelsPath = os.path.sep.join([args["yolo"], "coco.names"])
LABELS = open(labelsPath).read().strip().split("\n")
np.random.seed(42)
COLORS = np.random.randint(0, 255, size=(len(LABELS), 3),
dtype="uint8")
weightsPath = os.path.sep.join([args["yolo"], "yolov3.weights"])
configPath = os.path.sep.join([args["yolo"], "yolov3.cfg"])
print("[INFO] loading YOLO from disk...")
net = cv2.dnn.readNetFromDarknet(configPath, weightsPath)
image = cv2.imread(args["image"])
(H, W) = image.shape[:2]
ln = net.getLayerNames()
ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]
blob = cv2.dnn.blobFromImage(image, 1 / 255.0, (416, 416),
swapRB=True, crop=False)
net.setInput(blob)
start = time.time()
layerOutputs = net.forward(ln)
end = time.time()
print("[INFO] YOLO took {:.6f} seconds".format(end - start))
boxes = []
confidences = []
classIDs = []
for output in layerOutputs:
for detection in output:
scores = detection[5:]
classID = np.argmax(scores)
confidence = scores[classID]
if confidence > args["confidence"]:
box = detection[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))
boxes.append([x, y, int(width), int(height)])
confidences.append(float(confidence))
classIDs.append(classID)
idxs = cv2.dnn.NMSBoxes(boxes, confidences, args["confidence"],
args["threshold"])
if len(idxs) > 0:
for i in idxs.flatten():
(x, y) = (boxes[i][0], boxes[i][1])
(w, h) = (boxes[i][2], boxes[i][3])
color = [int(c) for c in COLORS[classIDs[i]]]
cv2.rectangle(image, (x, y), (x + w, y + h), color, 2)
text = "{}: {:.4f}".format(LABELS[classIDs[i]], confidences[i])
cv2.putText(image, text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX,
0.5, color, 2)
imgbytes = cv2.imencode('.png', image)[1].tobytes() # ditto
layout = [
[sg.Text('Yolo Output')],
[sg.Image(data=imgbytes)],
[sg.OK(), sg.Cancel()]
]
win = sg.Window('YOLO',
default_element_size=(14,1),
text_justification='right',
auto_size_text=False).Layout(layout)
event, values = win.Read()
win.Close()
cv2.waitKey(0)
EDIT:编辑:
Based on suggestions made by @Robert Davis I have tried to modify %QT_PLUGIN_PATH%
but there was no such path in my system environment.根据@Robert Davis 提出的建议,我尝试修改
%QT_PLUGIN_PATH%
但我的系统环境中没有这样的路径。
It looks strange but I just made this change in the preamble:它看起来很奇怪,但我只是在序言中做了这个改变:
import PySimpleGUI as sg
Instead of:代替:
import PySimpleGUIQt as sg
And it is all well now.现在一切都很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.