opencv3/C++視頻中疊加透明圖片的實(shí)現(xiàn)
更新時(shí)間:2019年12月10日 15:05:56 作者:阿卡蒂奧
今天小編就為大家分享一篇opencv3/C++視頻中疊加透明圖片的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
如下所示:
大致思路:獲取攝像頭畫面后,通過(guò)在圖像上循環(huán)疊加一組背景透明的PNG圖片,在圖像上產(chǎn)生類似GIF的動(dòng)圖效果。
#include<opencv2/opencv.hpp>
using namespace cv;
//PNG透明圖片疊加到視頻
int main()
{
Mat frame;
VideoCapture capture;
capture.open(0);
if(!capture.isOpened())
{
printf("can not open the camear......\n");
return -1;
}
namedWindow("mask", CV_WINDOW_AUTOSIZE);
namedWindow("output", CV_WINDOW_AUTOSIZE);
while (capture.read(frame))
{
//翻轉(zhuǎn)攝像頭圖像
flip(frame, frame, 1);
Mat image = frame;
for (int i = 1; i < 11; i++)
{
char filename[100];
sprintf(filename,"E:/image/image/00/%d.PNG",i);
//灰度圖
Mat grayPng = imread(filename,0);
threshold(grayPng,grayPng,180,255,CV_THRESH_BINARY);
//掩模反色
Mat mask = 255 - grayPng;
imshow("mask",mask);
//讀取背景透明的PNG圖像
Mat png = imread(filename);
Mat imROI;
imROI = image(Rect(200,20,png.cols,png.rows));
png.copyTo(imROI,mask);
imshow("output",image);
//替換新圖
image = frame;
waitKey(10);
}
}
waitKey();
return 0;
}


導(dǎo)入的PNG圖片為:


以上這篇opencv3/C++視頻中疊加透明圖片的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++的try塊與異常處理及調(diào)試技術(shù)實(shí)例解析
這篇文章主要介紹了C++的try塊與異常處理及調(diào)試技術(shù)實(shí)例解析,有助于讀者加深對(duì)try塊調(diào)試技術(shù)的認(rèn)識(shí),需要的朋友可以參考下2014-07-07
C++中對(duì)象的動(dòng)態(tài)建立與釋放詳解及其作用介紹
這篇文章主要介紹了C++中對(duì)象的動(dòng)態(tài)建立與釋放詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
虛函數(shù)表-C++多態(tài)的實(shí)現(xiàn)原理解析
這篇文章主要介紹了虛函數(shù)表-C++多態(tài)的實(shí)現(xiàn)原理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02

