Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Ubuntu 17.04上的OpenCV VideoCapture()不工作_Python_Opencv_Ubuntu_Webcam_Video Capture - Fatal编程技术网

Python Ubuntu 17.04上的OpenCV 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)

我试图在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)
    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的源代码编译