opencv:带网格和HIGHGUI错误的图像

时间:2013-12-11 16:00:59

标签: python opencv

您好我是opencv(版本2.4.7)的新手,并在python 2.7.4中使用它。我总是得到这个错误

  

HIGHGUI错误:V4L / V4L2:VIDIOC_S_CROP

每当我使用命令

cam = cv2.VideoCapture(cam_id)

即使出现错误,代码也能正常工作。我尝试使用this wireless camera,它显示的图像具有品红色和绿色的网格结构。我的问题是为什么我得到错误和这个奇怪的图像。代码在我的系统本身上也在其他系统上提供了很好的图像。 gstreamer-properties也有清晰的画面。代码:

from cv2 import cv
import cv2
import sys

def main(): 

cam_id = 0

# parameter
for i, arg in enumerate( sys.argv ):
    if i == 0: continue
    else: cam_id = arg

cam = cv2.VideoCapture(cam_id)

cv2.namedWindow("window", cv.CV_WINDOW_AUTOSIZE)

running = True

while running:
    try:
        flag, img = cam.read()
        if flag:
            cv2.imshow("window", img)
            cv2.waitKey(30)
    except KeyboardInterrupt:
        running = False

cv2.destroyWindow("window")

main()     

1 个答案:

答案 0 :(得分:2)

很抱歉这么晚才更新,很久以前我就找到了问题的解决方案,但忘了在这里回答。它需要在运行代码之前加载库。使用以下命令应该可以解决问题。

对于32位系统:

  

$ LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l2convert.so python filename.py

对于64位系统:

  

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so python filename.py

如果这不起作用,请尝试使用命令找到文件v4l2convert.so,

  

$ locate v4l2convert.so

作为输出,您将看到不同的路径,现在尝试使用不同路径的LD_PRELOAD。