欢迎来到入门教程网!

C语言

当前位置:主页 > 软件编程 > C语言 >

opencv3/C++视频中叠加透明图片的实现

来源:本站原创|时间:2020-01-10|栏目:C语言|点击:

如下所示:

大致思路:获取摄像头画面后,通过在图像上循环叠加一组背景透明的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++视频中叠加透明图片的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

上一篇:opencv3/C++图像滤波实现方式

栏    目:C语言

下一篇:减少OpenCV读取高分辨率图像的时间示例

本文标题:opencv3/C++视频中叠加透明图片的实现

本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/90.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有