OpenCV无法调整大小

时间:2019-04-13 20:34:26

标签: python python-3.x opencv

我正在将Python与OpenCV配合使用,并且正在尝试打开相机。但是,出现以下错误:

VIDEOIO ERROR: V4L: can't open camera by index 1
VIDEOIO ERROR: V4L: can't open camera by index 0
Traceback (most recent call last):
  File "set_hand_hist.py", line 71, in <module>
    get_hand_hist()
  File "set_hand_hist.py", line 38, in get_hand_hist
    img = cv2.resize(img, (640, 480))
cv2.error: OpenCV(4.1.0) /io/opencv/modules/imgproc/src/resize.cpp:3718: error: (-215:Assertion failed) !ssize.empty() in function 'resize'

我相信这是Python代码的相应部分:

def store_images(g_id):
    total_pics = 1200
    hist = get_hand_hist()
    cam = cv2.VideoCapture(1)
    if cam.read()[0]==False:
        cam = cv2.VideoCapture(0)
    x, y, w, h = 300, 100, 300, 300

    create_folder("gestures/"+str(g_id))
    pic_no = 0
    flag_start_capturing = False
    frames = 0
    .... ... remaining code ... ...

我尝试在Google上寻求解决方案;但是,我发现仍然没有任何效果。如果经验丰富的人可以看看并尝试帮助我,我将不胜感激。

非常感谢

1 个答案:

答案 0 :(得分:0)

想发表评论,但我缺乏声誉。似乎您无法同时打开相机1和0。

VIDEOIO ERROR: V4L: can't open camera by index 1
VIDEOIO ERROR: V4L: can't open camera by index 0

请确保将相机连接到系统。如果是这样,请检查是否已为相机安装了适当的Linux驱动程序。

在set_hand_hist.py的第38行, img 变量可能是空图像。这就是为什么在调整大小时会出错。您应该调查为什么 img 图片为空。不看完整的代码就无法告诉更多信息。

编辑:您可以尝试使用以下代码从相机读取图像并进行显示。我相信错误是从相机读取图像。如果下面的代码有效,我们应该在其他地方查找错误。

import cv2

camera_index=1
cam = cv2.VideoCapture(1)
if not cam.read()[0]:
    cam = cv2.VideoCapture(0)
    camera_index=0

while True:
    ret, frame = cam.read()
    cv2.imshow(f"image from camera {camera_index}", frame)
    if not ret:
        break
    k = cv2.waitKey(1)
    if k%256 == 27:
        # ESC pressed
        print("Escape hit, closing...")
        break

cam.release()
cv2.destroyAllWindows()