由于不确定的原因,我的opencv安装最近停止了工作。我有两个脚本都给出不同的错误:
脚本A:
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)
cv2.imshow('frame', rgb)
给我这个错误:
select timeout
VIDIOC_DQBUF: Resource temporarily unavailable
Traceback (most recent call last):
File "camera.py", line 19, in <module>
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)
cv2.error: OpenCV(4.0.1-dev) /home/me/Packages/opencv/modules/imgproc/src/color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)
cv2.imshow('frame', rgb)
脚本B:
import cv2
def show_webcam(mirror=False):
cam = cv2.VideoCapture(0)
while True:
ret_val, img = cam.read()
if mirror:
img = cv2.flip(img, 1)
cv2.imshow('my webcam', img)
if cv2.waitKey(1) == 27:
break # esc to quit
cv2.destroyAllWindows()
def main():
show_webcam(mirror=True)
给我这个错误:
select timeout
VIDIOC_DQBUF: Resource temporarily unavailable
Traceback (most recent call last):
File "camera3.py", line 26, in <module>
main()
File "camera3.py", line 22, in main
show_webcam(mirror=True)
File "camera3.py", line 15, in show_webcam
cv2.imshow('my webcam', img)
cv2.error: OpenCV(4.0.1-dev) /home/david/Packages/opencv/modules/highgui/src/window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'
这是主要问题:我以前使用过OpenCV,而当opencv找不到网络摄像头时,这两个错误通常都会发生。但是我确实有一个网络摄像头,当我打开Cheese Webcam Booth时,它可以正常工作并拍摄照片。有没有办法在不重新安装OpenCV的情况下修复此问题?
我正在使用Ubuntu 18.04。
答案 0 :(得分:0)
由于脚本A在相同版本的库和类似的操作系统(Mint 19)上运行正常,我将审查OpenCV的安装。
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)
cv2.imshow('frame', rgb)
cv2.waitKey(10)
通过
进行安装pip install opencv-python
以对第三方模块(https://github.com/opencv/opencv/issues/8471)具有“问题” 而闻名。
尝试从源代码构建和安装,通过这种方式,还将构建和链接接口模块(V4L,FFMpeg等)。
答案 1 :(得分:0)
两种可能的解决方案:1)设置正确的fps; 2)升级到适用于python的较新版本的opencv。
答案 2 :(得分:0)
在两种情况下,相机均已激活,但现在已被占用。因此,现在,在主“ while”循环中尝试放入
while(True):
ret_val, img = cap.read()
if(ret_val==False)
cap.open(0)
continue
...