生活随笔
收集整理的這篇文章主要介紹了
opencv实现两个视频拼接显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Mat實現將兩列視頻幀文件顯示在同一個視頻中
注釋是之前使用IplImage指針實現的,但是由于運行了幾次后出現了內存訪問沖突的問題,所以就改用了Mat類,感興趣的可以試著用IplImage實現下,兩種版本都是可以運行的。
#include <opencv2\opencv.hpp>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
int main()
{Mat depth = imread(
"F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-depth-f000.png");Mat image = imread(
"F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-img-f000.png");
int liv_width = depth.cols + image.cols;
int liv_height = image.rows;
int liv_nChannels = image.channels();VideoWriter videoWriter(
"F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-result.avi",CV_FOURCC(
'M',
'J',
'P',
'G'),
20,Size(liv_width,liv_height));
int i =
0;
char imageDir1[
256], imageDir2[
256];
while (!(depth.empty() && image.empty())){Rect rectd = Rect(
0,
0, depth.cols, depth.rows);Rect recti = Rect(depth.cols,
0, image.cols, image.rows);Mat dstImage;dstImage.create(Size(liv_width,liv_height),image.type());depth.copyTo(Mat(dstImage, rectd));image.copyTo(Mat(dstImage, recti));videoWriter << dstImage;i++;
sprintf(imageDir1,
"F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-depth-f%03d.png", i);
sprintf(imageDir2,
"F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-img-f%03d.png", i);depth = imread(imageDir1);image = imread(imageDir2);}
return 0;
}
最終的效果圖如下:
總結
以上是生活随笔為你收集整理的opencv实现两个视频拼接显示的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。