Python Ubuntu 17.04上的OpenCV VideoCapture()不工作
我试图在Ubuntu17.04上使用OpenCV的cv2 python绑定,但我似乎无法让VideoCapture正常工作。我正在用代码进行测试:Python Ubuntu 17.04上的OpenCV VideoCapture()不工作,python,opencv,ubuntu,webcam,video-capture,Python,Opencv,Ubuntu,Webcam,Video Capture,我试图在Ubuntu17.04上使用OpenCV的cv2 python绑定,但我似乎无法让VideoCapture正常工作。我正在用代码进行测试: import cv2 import numpy as np from matplotlib import pyplot as plt cap = cv2.VideoCapture(0) plt.ion() while True: ret,image = cap.read() print(image) print(cap)
import cv2
import numpy as np
from matplotlib import pyplot as plt
cap = cv2.VideoCapture(0)
plt.ion()
while True:
ret,image = cap.read()
print(image)
print(cap)
im = np.array(image, dtype=float)
plt.imshow(im)
plt.pause(0.0005)
plt.show()
结果是
None
<VideoCapture 0x7f272f87adb0>
Traceback (most recent call last):
File "cam.py", line 15, in <module>
plt.imshow(im)
File "/home/daniele/.local/lib/python3.5/site-packages/matplotlib/pyplot.py", line 3157, in imshow
**kwargs)
File "/home/daniele/.local/lib/python3.5/site-packages/matplotlib/__init__.py", line 1898, in inner
return func(ax, *args, **kwargs)
File "/home/daniele/.local/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 5124, in imshow
im.set_data(X)
File "/home/daniele/.local/lib/python3.5/site-packages/matplotlib/image.py", line 600, in set_data
raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data
无
回溯(最近一次呼叫最后一次):
文件“cam.py”,第15行,在
plt.imshow(im)
文件“/home/daniele/.local/lib/python3.5/site packages/matplotlib/pyplot.py”,第3157行,在imshow中
**kwargs)
文件“/home/daniele/.local/lib/python3.5/site packages/matplotlib/_init__.py”,第1898行,内部
返回函数(ax,*args,**kwargs)
文件“/home/daniele/.local/lib/python3.5/site packages/matplotlib/axes/_axes.py”,第5124行,在imshow中
im.set_数据(X)
set_数据中的第600行文件“/home/daniele/.local/lib/python3.5/site packages/matplotlib/image.py”
raise TypeError(“图像数据的维度无效”)
TypeError:图像数据的维度无效
没有打开带有网络摄像头视频的窗口
如果我不使用im=np.array(image,dtype=float)
错误相同,但TypeError:图像数据无法转换为float
我已经检查了我的系统中的网络摄像头是否为0,我用“Cheese”尝试了一下,它可以正常工作。
我已经通过
pip3安装了Opencv。安装Opencv python
Opencv已经有一些内置的util,用于使用cv2.imshow()
在窗口中显示图像,使用Opencv API,您不需要将图像转换为np.array()
。查看以下代码是否有效:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while True:
ret,image = cap.read()
cv2.imshow("window", image)
# Set the window delay time in milliseconds.
cv2.waitkey(300)
你可以使用其他应用程序打开网络摄像头吗?到目前为止,您做了什么?是否有可能以另一种方式显示图像,而不是以
cv2
提供的方式显示图像?这不是问题,正如opencv站点中所述:“MacOS和Linux控制盘目前有一些限制:不支持视频相关功能(不使用FFmpeg编译),例如cv2.imshow()将不起作用(不使用GTK+2.x或碳支持编译)')。所以我决定使用pyplot。不管怎么说,在我的macbook中,这个脚本运行得很好。你是如何安装OpenCV的?刚刚发现,在旧版本的OpenCV中,如3.1.0,一切都运行得很好。我成功地在Ubuntu上安装了它,但在OSX上无法安装。我已经安装了opencv-3.0.1的源代码编译