如下所示:
大致思路:獲取攝像頭畫面后,通過在圖像上循環疊加一組背景透明的PNG圖片,在圖像上產生類似GIF的動圖效果。
#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))  {    //翻轉攝像頭圖像    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;}

導入的PNG圖片為:


以上這篇opencv3/C++視頻中疊加透明圖片的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答
圖片精選