Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 我在创建人脸识别代码时出错。错误是;类型错误:预期的Ptr<;cv::UMat>;对于参数';src&x27&引用;什么是解决方案_Python_Opencv_Video Capture - Fatal编程技术网

Python 我在创建人脸识别代码时出错。错误是;类型错误:预期的Ptr<;cv::UMat>;对于参数';src&x27&引用;什么是解决方案

Python 我在创建人脸识别代码时出错。错误是;类型错误:预期的Ptr<;cv::UMat>;对于参数';src&x27&引用;什么是解决方案,python,opencv,video-capture,Python,Opencv,Video Capture,“这是错误” """ 回溯(最近一次呼叫最后一次): 文件“C:/Users/D_omy/pycharm项目/Machine_Learning/sampleone.py”,第4行,在 video2=cv2.cvt颜色(img,cv2.COLOR\u BGR2RGB) TypeError:参数'src'应为Ptr [警告:0]全局C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-cff9bdsm\opencv\modules\videoio\

“这是错误” """ 回溯(最近一次呼叫最后一次): 文件“C:/Users/D_omy/pycharm项目/Machine_Learning/sampleone.py”,第4行,在 video2=cv2.cvt颜色(img,cv2.COLOR\u BGR2RGB) TypeError:参数'src'应为Ptr [警告:0]全局C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-cff9bdsm\opencv\modules\videoio\src\cap_msmf.cpp(435)`匿名命名空间'::SourceReaderCB:~ SourceReaderCB终止异步回调


“”“

为此,让我们看一下每一步以及代码的作用

import cv2
video=cv2.VideoCapture(0)
img=video.read()
video2=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.imshow("camera",video2)
cv2.waitKey(0)

OpenCV上的
VideoCapture()
返回一个对象,该对象可用于逐帧捕获视频(这不是实际的视频)。一旦创建了这个对象,正确的下一步应该是读取帧

cv2.VideoCapture(0)
此OBJECT.read()方法返回两个值,而不是一个值,一个布尔标志和帧。这就是这里缺少的东西。这类工作的正确代码可能如下所示

img=video.read()
有关详细信息,最好参考官方文档和代码示例。

为此,让我们看一下每一步以及代码的作用

import cv2
video=cv2.VideoCapture(0)
img=video.read()
video2=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.imshow("camera",video2)
cv2.waitKey(0)

OpenCV上的
VideoCapture()
返回一个对象,该对象可用于逐帧捕获视频(这不是实际的视频)。一旦创建了这个对象,正确的下一步应该是读取帧

cv2.VideoCapture(0)
此OBJECT.read()方法返回两个值,而不是一个值,一个布尔标志和帧。这就是这里缺少的东西。这类工作的正确代码可能如下所示

img=video.read()
有关详细信息,最好参考官方文档和代码示例。

将此参数“cv2.CAP_DSHOW”添加到代码的第二行:

import cv2

cap = cv2.VideoCapture('vtest.avi')

while(cap.isOpened()):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
将此参数“cv2.CAP_DSHOW”添加到代码的第二行:

import cv2

cap = cv2.VideoCapture('vtest.avi')

while(cap.isOpened()):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
检查文档:By
img=video.read()
,您将获得
img
的元组
(retval,image)
,它不是
cvtColor()
的有效输入。检查文档:By
img=video.read()
,您将获得
img
的元组
(retval,image)
,它不是
cvtColor()的有效输入