OpenCV之ROI的使用

创建一个210*210的单通道图像并将其归0.在图像中使用ROI和cvSet()建立一个增长如金字塔状的数组。也就是,外部边界为0,下一个内部边界为20,再下一个内部边界为20,再下一个内部边界为40,以此类推,直到最后内部值为200,所有的边界应该为10像素的宽度。最后显示这个图形。

#include "cv.h"
#include "highgui.h"

int main(int argc, char** argv)
{
    IplImage *img;
    img = cvCreateImage(cvSize(210,210),IPL_DEPTH_8U,1);
    cvZero(img);

    int interset_x = 0;
    int interset_y = 0;
    int offset_x = img->width;
    int offset_y = img->height;
    int add = 0;
    bool condition = true;

    while(add<200)
    {
        cvSetImageROI(img,cvRect(interset_x,interset_y,offset_x,offset_y));
        
        if (condition){
            cvSet(img,cvScalar(0));
            condition = FALSE;
        }
        else{
            cvSet(img,cvScalar(add));
            condition = TRUE;
        }  

        cvResetImageROI(img);

        add = add+20;
        interset_x = interset_x +10;
        interset_y = interset_y +10;
        offset_x = offset_x -20;
        offset_y = offset_y -20;
    }

    cvNamedWindow( "OpenCVTest4", CV_WINDOW_AUTOSIZE );
    cvShowImage( "OpenCVTest4", img );
    cvWaitKey();
    cvDestroyWindow("OpenCVTest4");
    cvReleaseImage(&img);
    return 0;
}
原文地址:https://www.cnblogs.com/vitah/p/3092083.html