cv2: [ WARN:0] global cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB 终止异步回调

M. *_*ami 5 python opencv python-3.x

完整的警告信息:

[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback  
Run Code Online (Sandbox Code Playgroud)

代码:

import numpy as np
import cv2

captureDevice = cv2.VideoCapture(0) #captureDevice = camera

while True:
    ret, frame = captureDevice.read() 

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

captureDevice.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

描述:
当它运行时,my frame会出现窗口,当我终止代码时,它会给我警告信息。

Python: 3.7.4
OpenCV (cv2): 4.1.2
OS: Windows 10
Run Code Online (Sandbox Code Playgroud)

我不知道要解决这个警告,也不知道为什么它会引起我的注意。希望你能帮助我解决和理解这个问题。
此外,无论如何,此链接的答案对我没有帮助。

提前致谢。

Rah*_*man 24

这似乎是 opencv 的 MSMF 后端中的一个错误。您可以在此问题中查看更多详细信息。

我不认为这个问题存在于 Linux 平台上。所以我提供了windows的解决方案。

仅限 Windows 的解决方案

对于 windows 平台,您可以将后端更改为其他内容(最好是 DirectShow 后端。为此,请添加VideoCapture以下内容:

captureDevice = cv2.VideoCapture(0, cv2.CAP_DSHOW) #captureDevice = camera
Run Code Online (Sandbox Code Playgroud)

这适用于OpenCV>=3.4.


kar*_*lip 1

警告消息不是错误

但如果这让您很烦恼,您可以尝试通过0在 Windows 上将以下环境变量设置为来禁用 MSMF:

OPENCV_VIDEOIO_PRIORITY_MSMF
Run Code Online (Sandbox Code Playgroud)

如何在Windows中设置路径和环境变量