我正在将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上寻求解决方案;但是,我发现仍然没有任何效果。如果经验丰富的人可以看看并尝试帮助我,我将不胜感激。
非常感谢
答案 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()