订阅
纠错
加入自媒体

使用Python+OpenCV实现在视频中某对象后添加图像

2020-07-14 11:19
磐创AI
关注

下面是根据HSV图像准备的掩码,黄色区域中的所有像素的像素值为255,其余像素值为0:

使用Python+OpenCV实现在视频中某对象后添加图像

现在,我们可以根据需要轻松地将绿色虚线框内的像素值设置为1,让我们回到代码中:

# HSV的范围lower = np.array([6,10,68])upper = np.array([30,36,122])

# 为图像创建核kernel = np.ones((3,3),np.uint8)

# 每次运行以下while循环时,执行下面的两行cap = cv2.VideoCapture(path+"Pexels Videos 2675513.mp4")cnt = 0

# 循环加载、预处理和显示帧while(True):    ret, f = cap.read()

# 提取我们将放置logo的区域    # 此区域的尺寸应与logo的尺寸相匹配    mini_frame = f[500:740,875:1070,:]

# 创建 HSV 图像    hsv = cv2.cvtColor(f, cv2.COLOR_BGR2HSV)

# 创建掩码    mask = cv2.inRange(hsv, lower, upper)

dil = cv2.dilate(mask,kernel,iterations = 5)

# 创建3个通道    mini_dil = np.zeros_like(mini_frame)    mini_dil[:,:,0] = dil[500:740,875:1070]    mini_dil[:,:,1] = dil[500:740,875:1070]    mini_dil[:,:,2] = dil[500:740,875:1070]

# 复制logo图像    logo_copy = logo.copy()

# 当掩码的像素值为0时,将像素值设置为1    logo_copy[mini_dil == 0] = 1

# 将标识的像素值设置为1,其中标识的像素值为0    logo_copy[logo == 0] = 1

# 当logo的像素值不为1时,将像素值设置为1    mini_frame[logo_copy != 1] = 1

# 合并图像(数组乘法)    mini_frame = mini_frame*logo_copy

# 在框架中插入logo    f[500:740,875:1070,:] = mini_frame

# 调整框架的大小(可选)    f = cv2.resize(f, (480, 270), interpolation = cv2.INTER_AREA)

# 显示帧    cv2.imshow('frame', f)

# 保存帧    # cv2.imwrite(path+'frames/'+str(cnt)+'.png',f)    cnt+= 1

if cv2.waitKey(20) & 0xFF == ord('q'):        cv2.destroyAllWindows()        break

上面的代码片段将从视频中加载帧,对其进行预处理,并创建HSV图像和掩码,最后将logo插入到视频中。你完成了!

结尾

在本文中,我们介绍了一个非常有趣的计算机视觉用例,并从零开始实现它。在此过程中,我们还学习了如何使用图像数组以及如何从这些数组中创建掩码。

当你处理其他的计算机视觉任务时,这会对你有所帮助。

<上一页  1  2  3  4  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    人工智能 猎头职位 更多
    扫码关注公众号
    OFweek人工智能网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号