当我运行时,我的代码有问题,窗口打开和关闭,我可以看到结果。...................................................................
import cv2
import numpy
from os.path import join
imagem = cv2.imread('ImagensLupus/3.jpg')
imagemcinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)
class CascadeClassifier:
def __init__(self, glasses=True):
if glasses:
self.eye_cascade = cv2.CascadeClassifier(join('haar', 'haarcascade_eye_tree_eyeglasses.xml'))
else:
self.eye_cascade = cv2.CascadeClassifier(join('haar', 'haarcascade_eye.xml'))
def get_irises_location(self, imagemcinza):
eyes = self.eye_cascade.detectMultiScale(imagemcinza, 1.3, 5) # if not empty - eyes detected
irises = []
for (ex, ey, ew, eh) in eyes:
iris_w = int(ex + float(ew / 2))
iris_h = int(ey + float(eh / 2))
irises.append([numpy.float32(iris_w), numpy.float32(iris_h)])
return numpy.array(irises)
class EyerisDetector:
def __init__(self, image_source, classifier, tracker):
self.tracker = tracker
self.classifier = classifier
self.image_source = image_source
self.irises = []
self.blink_in_previous = False
self.blinks = 0
def run(self):
k = cv2.waitKey(30) & 0xff
while k != 27: # ESC
frame = self.image_source.get_current_frame()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
if len(self.irises) >= 2: # irises detected, track eyes
track_result = self.tracker.track(old_gray, gray, self.irises, self.blinks, self.blink_in_previous)
self.irises, self.blinks, self.blink_in_previous, lost_track = track_result
if lost_track:
self.irises = self.classifier.get_irises_location(gray)
else: # cannot track for some reason -> find irises
self.irises = self.classifier.get_irises_location(gray)
old_gray = gray.copy()
self.image_source.release()
cv2.waitKey()
cv2.imshow("Resultado", imagem)发布于 2018-08-14 14:28:22
使用cv2.waitKey()将在一小段时间内显示预期结果。
如果您希望结果按您希望的时间显示,请同时传递值0。这将显示结果,直到触发另一个事件(如按键)。你可以找到更多的on this link
一个典型的用例是:
#- program --
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()或者,您可以在while循环中显示窗口,直到按下某个键。在下面的示例中,窗口将一直显示,直到按下Esc键:
while(1):
cv2.imshow('image', img)
if cv2.waitKey(0) & 0xFF == 27: #--- press 'ESC' to break
break
cv2.destroyAllWindows()https://stackoverflow.com/questions/51833379
复制相似问题