当前位置: 首页 > news >正文

网站建设多久学会韩国搜索引擎排名

网站建设多久学会,韩国搜索引擎排名,有哪些网站可以做java题目,网站模版如何去除title版权信息原理 算法原理可以分为三个流程: 1、将视频(图像)从(顶->底)或(左->右)逐行(列)扫描图像。 2、将扫描完成的行(列)像素重新生成定格图像…

原理

算法原理可以分为三个流程:

1、将视频(图像)从(顶->底)或(左->右)逐行(列)扫描图像。

2、将扫描完成的行(列)像素重新生成定格图像。

3、使用原帧图像像素填充未扫描到的像素。

图像扫描

首先第一步,拿到一个视频(很多帧图像)可以简单的看成图像处理。我们需要将图像从顶到底逐行进行像素扫描,当然也可以从左到右逐列扫描,这要看你想要实现什么样的效果。在这里,我实现的是从上到下逐行扫描。效果如图所示。

 生成定格图像

所谓生成定格图像就是将我们每扫描到的行像素重新进行绘制。

    //从顶向下逐行扫描图像if (h < height){h++;//将扫描到的图像像素进行重新绘制,生成新图像for (int j = 0; j < width; j++){for (int c = 0; c < 3; c++){temp.at<Vec3b>(h, j)[c] = canvas.at<Vec3b>(h, j)[c];}}//绘制扫描过程line(canvas, Point(0, h), Point(width, h), Scalar(255, 255, 0), 2);}

 

 如图所示,这是使用上面代码段实现的逐行扫描生成定格图像。从效果上看,已经得到了我们想要的大致效果了。不过现在的问题是,经扫描到的行有像素填充,未扫描到的行还是漆黑一片。所以接下来我们需要做的就是将未扫描到的行用原图进行填充。具体请看源码注释。

图像混合

//将两幅图像进行线性混合
bool Linear_Blend(Mat src1, Mat src2, Mat& dst)
{/*参数说明:src1:生成的定格图像。由于生成的定格图像是从顶往下逐行扫描,故在扫描线下的像素为0src2:原视频帧图像dst:新生成的定格图像。算法原理:经扫描到的像素用src1进行填充,未扫描到的像素用src2进行填充,这样就可以得到我们所要的效果了。*/for (int i = 0; i < src1.rows; i++){for (int j = 0; j < src1.cols; j++){for (int c = 0; c < 3; c++){if (src1.at<Vec3b>(i, j)[0] != 0){dst.at<Vec3b>(i, j)[c] = src1.at<Vec3b>(i, j)[c];}else{dst.at<Vec3b>(i, j)[c] = src2.at<Vec3b>(i, j)[c];}}}}return true;
}

 效果

 源码

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;/*
抖音特效:蓝线挑战
算法原理:1、将视频(图像)从(顶->底)或(左->右)逐行(列)扫描图像。2、将扫描完成的行(列)像素重新生成定格图像3、使用原帧图像像素填充未扫描到的像素
*///将两幅图像进行线性混合
bool Linear_Blend(Mat src1, Mat src2, Mat& dst)
{/*参数说明:src1:生成的定格图像。由于生成的定格图像是从顶往下逐行扫描,故在扫描线下的像素为0src2:原视频帧图像dst:新生成的定格图像。算法原理:经扫描到的像素用src1进行填充,未扫描到的像素用src2进行填充,这样就可以得到我们所要的效果了。*/for (int i = 0; i < src1.rows; i++){for (int j = 0; j < src1.cols; j++){for (int c = 0; c < 3; c++){if (src1.at<Vec3b>(i, j)[0] != 0){dst.at<Vec3b>(i, j)[c] = src1.at<Vec3b>(i, j)[c];}else{dst.at<Vec3b>(i, j)[c] = src2.at<Vec3b>(i, j)[c];}}}}return true;
}int main()
{VideoCapture capture;capture.open("test.avi");if (!capture.isOpened()){cout << "can not open the camera!" << endl;system("pause");return -1;}int width = capture.get(CAP_PROP_FRAME_WIDTH);//视频帧宽int height = capture.get(CAP_PROP_FRAME_HEIGHT);//视频帧高//保存视频VideoWriter writer;int fourcc = writer.fourcc('m', 'p', '4', 'v'); //视频编码Size size(capture.get(CAP_PROP_FRAME_WIDTH), capture.get(CAP_PROP_FRAME_HEIGHT));writer.open("result.avi", fourcc, 30, size, true);int h = 0;//定义变量,代表当前扫描高度//用于生成定格照Mat temp = Mat::zeros(Size(width, height), CV_8UC3);Mat frame;while (capture.read(frame)){//将图像拷贝一份,用于每帧更新Mat canvas = frame.clone();//从顶向下逐行扫描图像if (h < height){h++;//将扫描到的图像像素进行重新绘制,生成新图像for (int j = 0; j < width; j++){for (int c = 0; c < 3; c++){temp.at<Vec3b>(h, j)[c] = canvas.at<Vec3b>(h, j)[c];}}//绘制扫描过程line(canvas, Point(0, h), Point(width, h), Scalar(255, 255, 0), 2);}Mat result = Mat::zeros(frame.size(), frame.type());//蓝线挑战最终定格图Linear_Blend(temp, canvas, result); //将两张图像进行像素叠加//writer.write(temp);//进行视频保存imshow("定格图像", temp);imshow("原视频帧", canvas);imshow("蓝线挑战", result);char key = waitKey(10);if (key == 27) break;}capture.release();system("pause");return 0;
}

http://www.dinnco.com/news/14882.html

相关文章:

  • 网络建设需求seo宣传
  • 河南网站备案中心网站首页模板
  • 建筑涂料网站设计微商营销
  • 网站域名分几种bt磁力搜索引擎索引
  • 深圳建设局官方网站营销渠道的三个类型
  • ADPR国际传媒网站建设中国十大企业管理培训机构
  • 四川住房和城乡建设厅进不去网站seo优化在哪里学
  • 公司网站建站公司google推广技巧
  • 中央经济工作会议2023年7月召开如何做网站推广优化
  • 英文外贸网站设计网站关键词怎么快速上排名
  • 做时时彩网站需要什么谷歌关键词排名查询工具
  • 免费发布推广的平台有哪些广告优化师怎么学
  • 免费企业自助建站世界球队实力排名
  • 南宁做网站开发的公司seo优化方式包括
  • 进行公司网站建设方案百度推广登录平台登录
  • 买模板建设网站饥饿营销案例
  • 福州有做网站引流的吗各行业关键词
  • 麻将网站怎么做的视频广告
  • 昆明网站建设怎么样上海网站建设制作
  • 公司网站建设模板下载营销型网站建设ppt
  • 如何将自己做的网站挂到服务器上电商网站seo怎么做
  • 网站开发做什么湖南 seo
  • 阀门网站建设谷歌google官网入口
  • 网站搭建排名优化资源猫
  • dede网站怎么备份微信营销的方法
  • 做动画在线观看网站深圳seo云哥
  • 云南火电建设公司网站目前疫情最新情况
  • 网站建设音乐代码自助网站建设
  • 公司建站有哪些优势seo长尾关键词
  • 校园网站建设策划书搜索量排行