首页 > 解决方案 > 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 ... ...

我试过在谷歌上寻找解决方案;但是,我发现没有任何东西可以工作。如果有经验的人可以看看并尝试帮助我,我将非常感激。

非常感谢

标签: pythonpython-3.xopencv

解决方案


想发表评论,但我缺乏声誉。似乎您无法同时打开相机 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()

推荐阅读