首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opencv不显示图像

Opencv不显示图像
EN

Stack Overflow用户
提问于 2018-08-14 11:38:12
回答 1查看 60关注 0票数 0

当我运行时,我的代码有问题,窗口打开和关闭,我可以看到结果。...................................................................

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2018-08-14 14:28:22

使用cv2.waitKey()将在一小段时间内显示预期结果。

如果您希望结果按您希望的时间显示,请同时传递值0。这将显示结果,直到触发另一个事件(如按键)。你可以找到更多的on this link

一个典型的用例是:

代码语言:javascript
复制
#- program --

cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

或者,您可以在while循环中显示窗口,直到按下某个键。在下面的示例中,窗口将一直显示,直到按下Esc键:

代码语言:javascript
复制
while(1):
    cv2.imshow('image', img)
    if cv2.waitKey(0) & 0xFF == 27:   #--- press 'ESC' to break
        break

cv2.destroyAllWindows()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51833379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档