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 如何在视频上放置覆盖层_Python_Opencv_Video_Overlay - Fatal编程技术网

Python 如何在视频上放置覆盖层

Python 如何在视频上放置覆盖层,python,opencv,video,overlay,Python,Opencv,Video,Overlay,我目前正在使用Python,并使用OpenCV的videocapture和cv.imshow来显示视频。我试图在这个视频上放置一个覆盖,这样我就可以使用cv.line、cv.rectangle等在上面绘制。每次帧更改时,它都会清除绘制的图像,因此我希望如果我要在上面放置某种覆盖,它将允许我在视频上绘制多个图像,而无需清除。有什么建议吗?谢谢你 您需要的是两个Mat对象-一个用于流式传输摄影机(例如Mat_-cam),另一个用于保持覆盖(Mat_-overlay) 在主窗口上绘制时,将直线和矩形对

我目前正在使用Python,并使用OpenCV的videocapture和cv.imshow来显示视频。我试图在这个视频上放置一个覆盖,这样我就可以使用cv.line、cv.rectangle等在上面绘制。每次帧更改时,它都会清除绘制的图像,因此我希望如果我要在上面放置某种覆盖,它将允许我在视频上绘制多个图像,而无需清除。有什么建议吗?谢谢你

您需要的是两个Mat对象-一个用于流式传输摄影机(例如Mat_-cam),另一个用于保持覆盖(Mat_-overlay)

在主窗口上绘制时,将直线和矩形对象保存在Mat_overlay上,并确保其不受流式视频的影响


当接收到下一帧时,Mat_cam将被更新,它将拥有下一个视频帧,但Mat_叠加将是相同的,因为它不会在每次“for”循环迭代中被清除/刷新。使用加权加法添加Mat_overlay和Mat_cam将获得所需的结果。

您需要两个Mat对象-一个用于流式传输摄影机(例如Mat_cam),另一个用于保持覆盖(Mat_overlay)

在主窗口上绘制时,将直线和矩形对象保存在Mat_overlay上,并确保其不受流式视频的影响


当接收到下一帧时,Mat_cam将被更新,它将拥有下一个视频帧,但Mat_叠加将是相同的,因为它不会在每次“for”循环迭代中被清除/刷新。使用加权加法添加Mat_overlay和Mat_cam将获得所需的结果。

我不确定我是否正确理解了您的问题。从您的问题中我得到的是,您希望覆盖层保留在您的帧上,通过视频捕获流传输,因为一个简单的解决方案是声明您的“Mat_cam”(摄像机流变量)在用于捕捉帧的循环外,以便“Mat_cam”变量不会在每次循环时都被释放。

我不确定我是否正确理解了您的问题。从您的问题中我得到的是,您希望覆盖层保留在您的帧上,通过视频捕获流传输,因为一个简单的解决方案是声明您的“Mat_cam”(摄像头流媒体变量)在用于捕获帧的循环之外,这样“Mat_cam”变量就不会在每次循环时都被释放。

我尝试了此操作,但一直出现以下错误:错误:..\..\..\modules\core\src\arithm.cpp:1287:error:(-209)操作既不是“array op array”(其中阵列的大小和通道数相同),也不是函数cv::arithm_op中的“array op scalar”,也不是函数cv::arithm_op…中的“scalar op array”,可能是因为我正在使用videoCapture函数加载我的视频?不是。这是因为您添加的两个Mat对象应该具有相同的大小和相同的通道数,即对于另一个糟糕的问题,这两个对象都应该是3通道ImagesOry。但是我该如何做呢知道我的视频中有多少通道吗?我尝试使用复制功能,但它不允许我使用videoCapture功能。如果您直接使用videoCapture将图像保存到Mat,并且没有使用cvtColor,则应该是3通道BGR 8UC3(8位未签名字符3通道)imageI尝试了这一操作,但一直出现以下错误:错误:..\..\..\modules\core\src\arithm.cpp:1287:error:(-209)操作既不是“数组操作数组”(其中数组具有相同的大小和相同的通道数),也不是函数cv::arithm_op中的“array op scalar”,也不是函数cv::arithm_op…中的“scalar op array”,可能是因为我正在使用videoCapture函数加载我的视频?不是。这是因为您添加的两个Mat对象应该具有相同的大小和相同的通道数,即对于另一个糟糕的问题,这两个对象都应该是3通道ImagesOry。但是我该如何做呢知道我的视频中有多少个通道吗?我尝试使用复制功能,但它不允许我使用videoCapture功能。如果您直接使用videoCapture将图像保存到Mat,并且没有使用cvtColor,则它应该是一个3通道BGR 8UC3(8位未签名字符3通道)图像