图像合成: cvSetImageROI 与 cvCopy

实现将文件夹下50幅图片合并到一幅图片中,保存并显示。

    IplImage* gray2 ;
 //
    IplImage* srcImg ;
    IplImage* dstImg ;
    IplImage* ResultImg;


int QRCodeLocalizer::ImageUnite(void )
{
    int ImageWidth,ImageHeight;
    int count=0;
    srcImg = cvLoadImage("/home/agv/QrProcess/QrCodeProcess/data/output/qr60.jpg");
    ImageWidth =  srcImg->width;
    ImageHeight = srcImg->height;

    CvSize dstSize;
    dstSize.width = srcImg->width *10.0;
    dstSize.height = srcImg->height *5.0;

    dstImg = cvCreateImage(dstSize, srcImg->depth, srcImg->nChannels);
    ResultImg = cvCreateImage(dstSize, srcImg->depth, srcImg->nChannels);
    for (int ii=50;ii<100;ii++)
    {
        char ImageName[100];
        sprintf(ImageName,"%s%d%s", "/home/agv/QrProcess/QrCodeProcess/data/output/qr",ii, ".jpg");//保存的图片名
        IplImage* srcImg = cvLoadImage(ImageName);
        cvSetImageROI(dstImg, cvRect(srcImg->width*(count%10),srcImg->height*(count/10), srcImg->width, srcImg->height));
        cvCopy(srcImg, dstImg);
        cvResetImageROI(dstImg);
        count++;
    }

    cvSaveImage("./output/Unite.png",dstImg);
    cvShowImage("testwindow2",dstImg) ;
    cv::waitKey(10);
}
1. 文件路径与图片名问题。

2. 图片尺寸大小的设计。

3. 开辟内存合并操作。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  cvSetImageROI函数和cvCopy函数的用法:

cvSetImageROI(IplImage*dst,cvRect(左边界,上边界,宽度,高度))。他的作用是把图像在图像dst中开辟出cvRect矩形框区域大小的内存空间,然后cvCopy(IplImage*src,IplImage*dst)函数会将源图像src复制到目标图像dst中。




你可能感兴趣的:(图像合成: cvSetImageROI 与 cvCopy)