本文主要是介绍《学习OpenCV》课后习题解答5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:(P104)
为一个图像创建多个图像头。读取一个大小至少为100*100的图像。另创建两个图像头并设置它们的origion,depth,nChannels和widthStep属性同之前读取的图像一样。在新的图像头中,设置宽度为20,高度为30.最后,将imageData指针分别指向像素(5,10)和(50,60)像素位置。传递这两个新的图像头给cvNot()。最后显示最初读取的图像,在那个大图像中应该有两个矩形,矩形内的值是原始值的求反值。
解答:
#include "cv.h"
#include "highgui.h"int main(int argc, const char** argv)
{IplImage *src = cvLoadImage(argv[1]);IplImage *dst1, *dst2;dst1 = cvCreateImage(cvSize(20, 30), src->depth, src->nChannels);dst1->origin = src->origin;//origin设置坐标原点的起始位置dst1->widthStep = src->widthStep;dst2 = cvCreateImage(cvSize(20, 30), src->depth, src->nChannels);dst2->origin = src->origin;dst2->widthStep = src->widthStep;dst1->imageData = src->imageData + 10 * src->widthStep + 5 * src->nChannels;dst2->imageData = src->imageData + 60 * src->widthStep + 50 * src->nChannels;cvNot(dst1, dst1);cvNot(dst2, dst2);cvNamedWindow("src", 1);cvShowImage("src", src);cvWaitKey(0);cvReleaseImage(&src);cvReleaseImage(&dst1);cvReleaseImage(&dst2);cvDestroyWindow("src");return 0;
}
结果图:
补充:运行之前请先设置好命令行参数argv[1],把图片路径设置好。可参考http://blog.csdn.net/u012130706/article/details/51443468
这篇关于《学习OpenCV》课后习题解答5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!