首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV错误:断言失败(size.width>0 && size.height>0)

OpenCV错误:断言失败(size.width>0 && size.height>0)
EN

Stack Overflow用户
提问于 2017-03-29 13:56:17
回答 1查看 2.5K关注 0票数 0

我经历了许多类似的话题,但是我的代码没有找到解决方案。首先,我只想运行我的网络摄像头,看看照片。

代码语言:javascript
运行
复制
import numpy as np
import cv2

cap = cv2.VideoCapture(1)

while True:
  re,img=cap.read()
  cv2.imshow("video output", img)
  k = cv2.waitKey(10)&0xFF
  if k==27:
     break
cap.release()
cv2.destroyAllWindows()

我也试过这样做:

代码语言:javascript
运行
复制
if img is not None:

我仍然会发现这个错误:

代码语言:javascript
运行
复制
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow

我不得不说,我没有使用我的笔记本摄像头,所以它的id不是0,但它应该是1。我读到了类似于c++:frame=cvQueryFrame(capture); if (frame.empty()) break;之类的解决方案,但是如何在Python中实现呢?我不认为这会解决我的问题?有谁有解决办法吗?

诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 2017-03-30 08:12:54

根据OpenCV文档

cap.read()返回bool (真/假)。如果框架被正确读取,它将是真实的。 ..。 有时,cap可能没有初始化捕获。在这种情况下,此代码显示错误。您可以检查它是否由cap.isOpened()方法初始化。如果是真的,好吧。否则,使用cap.open()打开它。

因此,您的代码变成:

代码语言:javascript
运行
复制
import numpy as np
import cv2

device = 1
cap = cv2.VideoCapture(device)
# if capture failed to open, try again
if not cap.isOpened():
    cap.open(device)

# only attempt to read if it is opened
if cap.isOpened:
    while True:
        re, img = cap.read()
        # Only display the image if it is not empty
        if re:
            cv2.imshow("video output", img)
        # if it is empty abort
        else:
            print "Error reading capture device"
            break
        k = cv2.waitKey(10) & 0xFF
        if k == 27:
            break
    cap.release()
    cv2.destroyAllWindows()
else:
    print "Failed to open capture device"

如果仍然有错误,请尝试将设备更改为-1、0或2。否则,可能是与OpenCV无关的问题,例如驱动程序问题。

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

https://stackoverflow.com/questions/43095625

复制
相关文章

相似问题

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