使用Python+OpenCV实现在视频中某对象后添加图像
为我们的计算机视觉项目制定实现计划
在实施这个项目之前,我们先了解一下一个计算机视觉技术:图像掩码。让我给你看一些插图来了解这项技术。
假设我们要在图像(图2)中放置一个矩形(图1),使第二个图像中的圆出现在矩形的顶部:
所以,期望的结果应该是这样的:
然而,这并不是那么简单的。当我们从图1中选取矩形并将其插入图2中时,它将出现在粉色圆圈的顶部:
这不是我们想要的,圆圈应该在矩形的前面。所以让我们了解如何解决这个问题。
这些图像本质上是数组,这些数组的值是像素值,每种颜色都有自己的像素值。
因此,我们可以将矩形的像素值设置为1,在这里它应该与圆重叠(在图5中),同时保持矩形的其余像素值不变。
在图6中,蓝色虚线包围的区域是我们放置矩形的区域,让我们用R来表示这个区域。我们也将R的所有像素值设置为1,但是我们将保持整个粉色圆圈的像素值不变:
我们的下一步是将矩形的像素值与R的像素值相乘,因为任何数字乘以1都会得到该数字本身,所以所有R的像素值都将被矩形的像素替换。
类似地,矩形的像素值1将被图6的像素替换,最终的结果是这样的:
这是我们将要使用的技术,将OpenCV标志嵌入到视频中的背后原理。
在Python中实现这项技术
你可以使用Jupyter笔记本或任何你选择的IDE,然后我们首先导入必要的库。
导入库
import cv2import reimport osimport randomimport numpy as npimport matplotlib.pyplot as pltfrom os.path import isfile, join
注意:本教程使用的OpenCV库版本是4.0.0。
加载图像
接下来,我们将指定保存logo和视频的工作目录路径。请注意,你应该在下面的代码片段中指定“path”:
# 指定工作目录的路径path = ".../"
# 读取logo图像logo = cv2.imread(path+"opencv_logo.png")
# 读取视频的第一帧cap = cv2.VideoCapture(path+"Pexels Videos 2675513.mp4")ret, frame = cap.read()
至此我们已经加载了logo图像和视频的第一帧。现在让我们看看这些图像或数组的形状:
logo.shape, frame.shape
输出:((240, 195, 3), (1080, 1920, 3))
两个输出都是三维的。第一个维度是图像的高度,第二个维度是图像的宽度,第三个维度是图像中的通道数,即蓝色、绿色和红色。
最新活动更多
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 2024 智能家居出海论坛
-
精彩回顾立即查看>> 【在线会议】多物理场仿真助跑新能源汽车
推荐专题
-
10 中国AI的“六便士”时刻
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论