Fixed display problem. Was getting bad colors. Enabled ability to run using either PSG or PSG-Qt by only changing import.
This commit is contained in:
parent
ccfd556ab6
commit
76d34616a6
|
@ -1,28 +1,28 @@
|
||||||
# USAGE
|
# USAGE
|
||||||
# python yolo.py --image images/baggage_claim.jpg --yolo yolo-coco
|
# python yolo.py --image images/baggage_claim.jpg --yolo yolo-coco
|
||||||
"""
|
"""
|
||||||
usage: yolo_video.py [-h] -i INPUT -o OUTPUT -y YOLO [-c CONFIDENCE]
|
A Yolo image processor with a GUI front-end
|
||||||
|
The original code was command line driven. Now these parameters are collected via a GUI
|
||||||
|
|
||||||
|
old usage: yolo_video.py [-h] -i INPUT -o OUTPUT -y YOLO [-c CONFIDENCE]
|
||||||
[-t THRESHOLD]
|
[-t THRESHOLD]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
# import the necessary packages
|
# import the necessary packages
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import argparse
|
import argparse
|
||||||
import time
|
import time
|
||||||
import cv2
|
import cv2
|
||||||
import os
|
import os
|
||||||
import PySimpleGUI as sg
|
import PySimpleGUIQt as sg
|
||||||
from PIL import Image
|
|
||||||
import io
|
|
||||||
|
|
||||||
layout = [
|
layout = [
|
||||||
[sg.Text('YOLO')],
|
[sg.Text('YOLO')],
|
||||||
[sg.Text('Path to image'), sg.In(r'A:\Dropbox\Camera Uploads\2018-11-16 17.35.15.jpg',size=(40,1), key='image'), sg.FileBrowse()],
|
[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'C:\Python\PycharmProjects\yolo-object-detection\yolo-coco',size=(40,1), key='yolo'), sg.FolderBrowse()],
|
[sg.Text('Yolo base path'), sg.In(r'yolo-coco',size=(40,1), key='yolo'), sg.FolderBrowse()],
|
||||||
[sg.Text('Confidence'), sg.Slider(range=(0,1),orientation='h', resolution=.1, default_value=.5, size=(15,15), key='confidence')],
|
[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,1), orientation='h', resolution=.1, default_value=.3, size=(15,15), key='threshold')],
|
[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.OK(), sg.Cancel(), sg.Stretch()]
|
||||||
]
|
]
|
||||||
|
|
||||||
win = sg.Window('YOLO',
|
win = sg.Window('YOLO',
|
||||||
|
@ -45,8 +45,8 @@ win.Close()
|
||||||
# args = vars(ap.parse_args())
|
# args = vars(ap.parse_args())
|
||||||
|
|
||||||
# load the COCO class labels our YOLO model was trained on
|
# load the COCO class labels our YOLO model was trained on
|
||||||
args['threshold'] = float(args['threshold'])
|
args['threshold'] = float(args['threshold']/10)
|
||||||
args['confidence'] = float(args['confidence'])
|
args['confidence'] = float(args['confidence']/10)
|
||||||
|
|
||||||
labelsPath = os.path.sep.join([args["yolo"], "coco.names"])
|
labelsPath = os.path.sep.join([args["yolo"], "coco.names"])
|
||||||
LABELS = open(labelsPath).read().strip().split("\n")
|
LABELS = open(labelsPath).read().strip().split("\n")
|
||||||
|
@ -66,6 +66,7 @@ net = cv2.dnn.readNetFromDarknet(configPath, weightsPath)
|
||||||
|
|
||||||
# load our input image and grab its spatial dimensions
|
# load our input image and grab its spatial dimensions
|
||||||
image = cv2.imread(args["image"])
|
image = cv2.imread(args["image"])
|
||||||
|
|
||||||
(H, W) = image.shape[:2]
|
(H, W) = image.shape[:2]
|
||||||
|
|
||||||
# determine only the *output* layer names that we need from YOLO
|
# determine only the *output* layer names that we need from YOLO
|
||||||
|
@ -143,19 +144,9 @@ if len(idxs) > 0:
|
||||||
0.5, color, 2)
|
0.5, color, 2)
|
||||||
|
|
||||||
# show the output image
|
# show the output image
|
||||||
|
imgbytes = cv2.imencode('.png', image)[1].tobytes() # ditto
|
||||||
|
|
||||||
|
|
||||||
# let img be the PIL image
|
|
||||||
img = Image.fromarray(image) # create PIL image from frame
|
|
||||||
size = img.size
|
|
||||||
size = (size[0]//4, size[1]//4)
|
|
||||||
img = img.resize(size)
|
|
||||||
bio = io.BytesIO() # a binary memory resident stream
|
|
||||||
img.save(bio, format='PNG') # save image as png to it
|
|
||||||
imgbytes = bio.getvalue() # this can be used by OpenCV hopefully
|
|
||||||
|
|
||||||
# imgbytes = cv2.imencode('.png', image)[1].tobytes() # ditto
|
|
||||||
|
|
||||||
layout = [
|
layout = [
|
||||||
[sg.Text('Yolo Output')],
|
[sg.Text('Yolo Output')],
|
||||||
[sg.Image(data=imgbytes)],
|
[sg.Image(data=imgbytes)],
|
||||||
|
|
Loading…
Reference in New Issue