OpenCV之截取条码制作视频算法

OpenCV之截取条码制作视频算法

由于条码识别项目由前期的图片识别改为视频流识别导致自己不得不自己制作视频以满足项目前期测试需求,故有了这个视频的制作

话不多少,直接上代码吧!

代码能直接运行

//截取条码制作视频算法
#include<opencv2/opencv.hpp>
#include<iostream>
#include<string>

using namespace std;
using namespace cv;

int main()
{
	Mat Image = imread("E:/barcode/bar6.png");      //454*283
	imshow("Image", Image);

	vector<Mat> reImage;       //进入
	vector<Mat> reImage1;     //出去
	for (int i = 10; i < 454;)
	{
		if (i < 454)
		{
			Mat background(300, 500, CV_8UC3, Scalar::all(255));
			Mat background1(300, 500, CV_8UC3, Scalar::all(255));
			Mat roiImage = Image(Rect(454 - i, 0, i, 283));
			Mat roiImage1 = Image(Rect(0, 0, 454 - (i - 10), 283));
			Mat copyImage = background(Rect(0, 0, roiImage.cols, roiImage.rows));
			Mat copyImage1 = background1(Rect(454 - roiImage1.cols, 0, roiImage1.cols, roiImage1.rows));
			roiImage.copyTo(copyImage);
			roiImage1.copyTo(copyImage1);
			reImage.push_back(background);
			reImage1.push_back(background1);
			i += 10;
		}
	}

	for (int i = 0; i < reImage1.size(); i++)
	{
		reImage.push_back(reImage1[i]);
	}

	char name[20];
	VideoWriter video("E:/barcode/bar.mp4", CV_FOURCC('M', 'J', 'P', 'G'), 25, Size(500, 300));
	for (int i = 0; i < reImage.size(); i++)
	{
		sprintf(name, "re%d", i);
		imshow(name, reImage[i]);
		video << reImage[i];
	}

	waitKey(0);
	return 0;
}

OpenCV提供的写入视频的API

VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true)

各参数含义如下:

filename: 输出视频文件的路径及名称
fourcc:4-character code of
codec的缩写,四个字符用来表示压缩帧的编解码。
fps:帧率 frameSize:每帧图片的大小
isColor:如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧

其中第二个参数fourcc提供多种格式

CV_FOURCC(‘P’, ‘I’, ‘M’, ‘1’) = MPEG-1 codec
CV_FOURCC(‘M’, ‘J’, ‘P’, ‘G’) = motion-jpeg codec
CV_FOURCC(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2codec
CV_FOURCC(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec
CV_FOURCC(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec
CV_FOURCC(‘U’, ‘2’, ‘6’, ‘3’) = H263codec
CV_FOURCC(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec
CV_FOURCC(‘F’,‘L’, ‘V’, ‘1’) = FLV1 codec

其中有不足的地方,欢迎交流指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值