您的位置:首页 > 运维架构

opencv cvCopy 拼接图像

2013-11-05 16:23 281 查看

/**
* opencvTest:图像的拼接
*
* By missingu
*		2013.11.05
*/

#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui_c.h>

using namespace cv;
using namespace std;
int main()
{
IplImage * pImg = cvLoadImage(".\\cloud3319.jpg" , CV_LOAD_IMAGE_ANYCOLOR|CV_LOAD_IMAGE_ANYDEPTH) ;
if( pImg == NULL )
{
printf(" cannot open img\n") ;
return -1 ;
}
//const int params[2] = { CV_IMWRITE_JPEG_QUALITY , 100 } ;// opencv 默认压缩比是95
//cvSaveImage( ".\\test.jpg" , pImg ,(const int *)params) ;

//图像拼接
Rect rect ;
rect.x = 0 ;
rect.y = 0 ;
rect.width  = 1100 ;
rect.height = 1100 ;
//IplImage *dst = cvCreateImage(cvSize( pImg->width ,pImg->height) , IPL_DEPTH_8U , 3 ) ; // 注意上下要一样 , 这儿的大小可以不是原始图像的大小,但是要比原始图像大。
IplImage *dst = cvCreateImage(cvSize( 1100*9 ,1100*8) , IPL_DEPTH_8U , 3 ) ;   // 注意上下要一样 , 这儿的大小可以不是原始图像的大小,但是要比原始图像大。
cvSetZero(dst) ;  // 初始化test

printf("pImg = %d\n" , pImg->imageSize) ;
printf("dst  = %d\n" , dst->imageSize) ;

for( int i = 0 ;i < 2 ; i++ )
{
cvSetImageROI( dst , Rect( 0 , i*pImg->height , pImg->width , pImg->height) ) ;  // 注意上下要一样 ,此处的大小必须是原始图像的大小,否则是不行的,
//cvSetImageROI( dst , Rect( 0 , 0 , 1100 , 1100) ) ;
///pImg->imageData = pImg->imageData+i*1100*3*1100 ;
cvCopy(pImg , dst , NULL ) ;    //输入输出数组必须是同样的类型、维数和大小
cvResetImageROI(dst) ;  // 释放感兴趣的区域

}

cvSaveImage("dst.jpg" , dst) ;

/*
Mat img = imread("c:/pp.jpg");
if(img.empty())
{
cout<<"error";
return -1;
}
imshow("照片",img);
waitKey();
*/
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: