【发布时间】:2021-03-10 04:04:39
【问题描述】:
我已在此设备上广泛使用 OpenCV for Python,但从未遇到过此问题。我正在运行 Windows 8.1 Pro x64。我在两个不同的网络摄像头上遇到了同样的问题。
当我使用多处理将脚本迁移到不同的进程时,我首先遇到了这个问题。 (OpenCV 仅在一个进程中运行,带有一个网络摄像头)。我担心像其他一些模块一样,这是 OpenCV 在不同的环境中运行,但无论如何我只遇到了多线程的问题。似乎与此无关,而是我现在从命令行执行整个程序的事实。
如果我在 python IDLE 或命令行 IDLE 中使用下面的 Video Capture 对象运行基本脚本,它会正常运行。我用于 python 的 ENV PATH 签出到 3.8 的相同安装。
import cv2
cap = cv2.VideoCapture(0)
running, _ = cap.read()
while running:
running, frame = cap.read()
cv2.imshow("Feed", frame)
key = cv2.waitKey(1)
if key & 0xFF == ord("q"):
running = False
cap.release()
cv2.destroyAllWindows()
但是,如果我使用这些内容创建一个名为“test.py”的脚本并在终端运行它,我会收到一系列错误并且无法打开网络摄像头。
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\...\scripts>test.py
[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\o
pencv\modules\videoio\src\cap_msmf.cpp (373) `anonymous-namespace'::SourceReader
CB::OnReadSample videoio(MSMF): OnReadSample() is called with error status: -214
7024891
[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\o
pencv\modules\videoio\src\cap_msmf.cpp (385) `anonymous-namespace'::SourceReader
CB::OnReadSample videoio(MSMF): async ReadSample() call is failed with error sta
tus: -2147024891
[ WARN:1] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\o
pencv\modules\videoio\src\cap_msmf.cpp (912) CvCapture_MSMF::grabFrame videoio(M
SMF): can't grab frame. Error: -2147024891
[ WARN:1] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\o
pencv\modules\videoio\src\cap_msmf.cpp (435) `anonymous-namespace'::SourceReader
CB::~SourceReaderCB terminating async callback
我已经尝试使用“cv2.CAP_DSHOW”修复一些建议,虽然它删除了警告,但我得到的只是一个黑框。
【问题讨论】:
-
抱歉,sn-p 只是要点,我已经用实际的脚本内容更新了它。
-
抱歉,帮不上忙。我无法重现您的问题,在 Windows 上运行良好。试试看这个:stackoverflow.com/questions/59371075/… 或者这个answers.opencv.org/question/212468/…
-
感谢您的尝试。不幸的是,其中任何一个都没有运气。
-
可能是配置或第 3 方库安装问题。检查您的 cmake 以获取正确编译的 3rd 方库。并检查它们是否兼容
标签: python windows opencv cmd python-multiprocessing