您好我是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()
答案 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。