IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 通过阈值方法结合OPENCV的与或运算将个人影像融入视频中 -> 正文阅读

[人工智能]通过阈值方法结合OPENCV的与或运算将个人影像融入视频中


前言

【知识点】
视觉处理技术结合模式识别方法。

【素材准备】
准备视频A和视频B。
其中 视频A 是网上下载的风景区的视频录制(如张家界、武夷山或五大名山之一)。
视频B是个人在白墙或纯色背景前的行走视频。

【要求】
(i)通过阈值方法,结合OPENCV的与或运算,将视频B的个人影像(消除背景后)融入视频A,得到视频C。(50%)


一、代码实现

import os
import cv2

os.chdir('C:/Users/Bert/PycharmProjects/模式识别与计算机视觉/实验三/video/')

# 定义视频路径
A_video = "A_1.mp4"  # 背景视频
B_video = "B_2.mp4"  # 人物视频
result_video = "A_migle_B.mp4"  # 输出视频

# Define the codec and create VideoWriter object
cap_A = cv2.VideoCapture(A_video)  # 读取视频A
cap_B = cv2.VideoCapture(B_video)  # 读取视频B

fps_video_A = cap_A.get(cv2.CAP_PROP_FPS)  # 获取视频A帧率
fps_video_B = cap_B.get(cv2.CAP_PROP_FPS)  # 获取视频B帧率

fourcc = cv2.VideoWriter_fourcc(*"mp4v")  # 设置写入视频的编码格式

width_A = int(cap_A.get(cv2.CAP_PROP_FRAME_WIDTH))  # 获取视频A宽度
width_B = int(cap_B.get(cv2.CAP_PROP_FRAME_WIDTH))  # 获取视频B宽度

height_A = int(cap_A.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 获取视频A高度
height_B = int(cap_B.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 获取视频B高度

roi_width = int((width_A - width_B) / 2)  # 人物视频在背景视频起始宽度
roi_height = int((height_A - height_B) / 2)  # 人物视频在背景视频起始高度

videoWriter = cv2.VideoWriter(result_video, fourcc, fps_video_A, (width_A, height_A))  # 保存视频

print("视频A的宽度:{}  视频A的高度:{}  视频A的帧率:{}".format(width_A, height_A, fps_video_A))
print("视频B的宽度:{}  视频B的高度:{}  视频的帧率:{}".format(width_B, height_B, fps_video_B))

while (cap_A.isOpened()):
    ret_A, frame_A = cap_A.read()  # 背景视频
    ret_B, frame_B = cap_B.read()  # 人物视频
    
    if ret_A == True & ret_B == True:

        # 2. 根据背景大小提取感兴趣区域roi
        # 把人物放在背景视频中央,提取原图中要放置人物的区域roi
        rows, cols = frame_B.shape[:2]
        roi = frame_A[roi_height:rows + roi_height, roi_width:cols + roi_width]

        # 3. 创建掩膜mask
        img2gray = cv2.cvtColor(frame_B, cv2.COLOR_BGR2GRAY)  # 将图片灰度化,如果在读取人物时直接灰度化,该步骤可省略
        # cv2.THRESH_BINARY:如果一个像素值低于200,则像素值转换为255(白色色素值),否则转换成0(黑色色素值)
        # 即有内容的地方为黑色0,无内容的地方为白色255.
        # 白色的地方还是白色,除了白色的地方全变成黑色
        ret, mask = cv2.threshold(img2gray, 225, 255, cv2.THRESH_BINARY)  # 阙值操作
        mask_inv = cv2.bitwise_not(mask)  # 与mask颜色相反,白色变成黑色,黑变白

        # 4. 人物与感兴趣区域roi融合
        # 保留除人物外的背景
        img1_bg = cv2.bitwise_and(roi, roi, mask=mask)
        img2_fg = cv2.bitwise_and(frame_B, frame_B, mask=mask_inv)
        dst = cv2.add(img1_bg, img2_fg)  # 人物与感兴趣区域roi进行融合
        frame_A[roi_height:rows + roi_height, roi_width:cols + roi_width] = dst  # 将融合后的区域放进原图
        img_new_add = frame_A.copy()  # 对处理后的图像进行拷贝

        videoWriter.write(img_new_add)
    else:
        break

# Release everything if job is finished
cap_A.release()
cap_B.release()
videoWriter.release()
cv2.destroyAllWindows()

二、结果展示

原A_1.mp4:

在这里插入图片描述
原B_2.mp4:

在这里插入图片描述
A_migle_B.mp4:

在这里插入图片描述

三、建议

1.视频最终效果与视频B是个人在白墙或纯色背景前的行走视频有关,最好选取白色背景明显,整个人物明显区分于白色背景的视频,如面色,衣服等。

2.通过调节阈值也可以增强实验效果,具体代码在这一步:

ret, mask = cv2.threshold(img2gray, 215, 255, cv2.THRESH_BINARY)  # 阙值操作

该代码的解释为:将灰度图中灰度值小于215的点置0,灰度值大于215的点置255。因此可以改变代码中215数值来增强视频效果。
3.注意视频尺寸:背景视频尺寸一定要大于人物视频尺寸,无论长和宽。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 11:56:10  更:2022-05-19 11:57:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:21:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码