python - 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 ... ...
我试过在谷歌上寻找解决方案;但是,我发现没有任何东西可以工作。如果有经验的人可以看看并尝试帮助我,我将非常感激。
非常感谢
解决方案
想发表评论,但我缺乏声誉。似乎您无法同时打开相机 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()
推荐阅读
- javascript - 从带有 id 的列表中的 span 中获取值
- spring - Axios CORS 错误(403)甚至服务器允许所有
- angular - 如何在 Angular 7 中创建一个自定义验证器来检查用户名是否存在于数据库中?
- pandas - Pandas 将 2 个不同维度的系列相乘以给出数据框
- javascript - 未挂载组件的状态更新如何导致内存泄漏?
- dax - DAX 中 Row_Number() Over (Order by ) 的等价物是什么?
- c# - 异步 XML 文件编写 C#
- javascript - 命名默认参数的 JSDoc Typescript 检查
- angular8 - Angular 8 的 ngx-slick-carousel 问题
- javascript - 如何根据用户是否登录显示内容