《学习OpenCV》课后习题解答4

来源:互联网 发布:中国经济数据公布时间 编辑:程序博客网 时间:2024/06/07 04:28

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

解答:
(解题关键在于弄懂题目意思)

#include "cv.h"#include "highgui.h"int main(){    IplImage* single_img = cvCreateImage(cvSize(210, 210), 8, 1);//210*210 单通道    cvZero(single_img);    int Width = 210, Height = 210;    int maxPixel = 200;    int value = 0;    int i, j;    for (i = 0, j = 0; i <= Width, j <= Height;)    {        //  for(i = 0; i <= Width;)        //  {        cvSetImageROI(single_img, cvRect(i, j, Width - i, Height - j)); //set the ROI of the single_img                                                                        //  cvSetImageROI(single_img, cvRect(0, 0, Width, Height));        cvSet(single_img, cvScalar(value, 0, 0));        value += 20;        cvResetImageROI(single_img);        //  }        i += 10;//边界都为10个像素宽度        j += 10;        if (value == maxPixel)//超过最大像素值200时,退出        {            break;        }    }    cvNamedWindow("ROI", 0);    cvShowImage("ROI", single_img);    cvWaitKey(0);    cvDestroyWindow("ROI");    cvReleaseImage(&single_img);    return 0;}

结果图为:
这里写图片描述

0 0
原创粉丝点击