Python CV2:[ WARN:0]`anonymous-namespace‘SourceReaderCB~SourceReaderCB terminating async callback

一、出问题的代码

import numpy as np
import cv2

cap = cv2.VideoCapture(0)  # 摄像头编号。

# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 注意编码器
out = cv2.VideoWriter('output3.avi', fourcc, 20.0, (640, 480))

while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        # 根据y轴对称
        frame = cv2.flip(frame, 1)
        # write the flipped frame
        out.write(frame)
        cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()

二、解决办法

解决办法一:

将第三行 cap = cv2.VideoCapture(0)改为

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

解决办法二:

windows 下:在命令行中输入:

setx OPENCV_VIDEOIO_PRIORITY_MSMF 0 

三、参考

  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这是一个警告信息,来自于 OpenCV 的 videoio 模块中的 cap_msmf.cpp 文件的第 434 行。其中的 `anonymous-namespace'::SourceReaderCB::~SourceReaderCB` 表示一个异步回调函数的终止。这个警告信息通常是由于视频流读取出现问题而导致的。 ### 回答2: 这是一个警告消息,它来自videoio模块的cap_msmf.cpp文件的434行,其中的`anonymous-namespace'::SourceReaderCB::~SourceReaderCB`表示这是一个名为SourceReaderCB的类的析构函数。警告消息的内容是该异步回调正在终止。 这个警告消息的意思是视频输入/输出模块(videoio)中的一个异步回调(callback)正在被终止。异步回调是一种在程序执行其他任务时被调用的函数,用于处理某个异步操作的结果或事件。在这种情况下,视频输入/输出模块使用异步回调来处理某个与视频输入输出相关的操作,而该异步回调正在被终止。 可能的原因之一是该异步回调操作已经完成或被中止,导致程序终止异步回调的执行。这可能是正常行为,或者可能是某种问题或错误的结果。如果视频输入/输出相关的功能正常运行且没有出现异常情况,则此警告消息可以被忽略。如果存在问题,可能需要检查视频输入/输出模块的配置或输入数据的有效性,以确定问题的根本原因,并相应地进行调整或修复。 ### 回答3: [ WARN:0] global modules\videoio\src\cap_msmf.cpp (434) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback 是由于使用了OpenCV库中的视频输入功能时,发生了一个警告提示。该警告提示出现在模块videoio中的cap_msmf.cpp文件的第434行,具体是由匿名命名空间下的SourceReaderCB类的析构函数引发的。异步回调意味着在后台进行某个操作,当该操作完成时,会调用相应的回调函数。警告提示表示回调函数未能正常执行完毕。 这可能是由于多种原因引起的,其中可能包括以下几种情况: 1. 视频源的读取过程中发生了错误或异常,导致异步回调函数无法正常终止。这可能是由于视频文件损坏、文件格式不受支持或视频设备故障等原因引起的。 2. 在使用OpenCV库的视频输入功能时,可能存在与本地环境或硬件驱动不兼容的问题,导致异步回调函数无法成功执行。 3. 异步回调函数本身出现了错误,导致无法正常终止。这可能是由于代码编写不规范、内存管理问题或逻辑错误引起的。 要解决这个问题,可以尝试以下几种方法: 1. 检查视频源的完整性和格式是否符合要求。可以尝试使用其他视频文件或不同的视频设备进行测试,以了解问题是否源自特定的视频源。 2. 更新OpenCV库和相关的驱动程序,确保与本地环境兼容。可以参考OpenCV官方文档或相关社区来获取更多关于配置和兼容性的信息。 3. 检查异步回调函数的实现代码,确保没有逻辑错误或内存管理问题。可以使用调试器进行调试,跟踪错误发生的具体位置,并尝试修复问题。 总而言之,上述警告提示表示在使用OpenCV库的视频输入功能时,异步回调函数无法正常执行完毕,可能由多种原因引起。通过检查视频源、更新相关驱动程序以及检查异步回调函数的实现代码来解决问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值