opencv cvCopy 拼接图像

 
 
/**
 * 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;
}

你可能感兴趣的:(opencv cvCopy 拼接图像)