《学习OpenCV》课后习题解答6
来源:互联网 发布:2016网络知识竞赛 编辑:程序博客网 时间:2024/06/13 15:47
题目:(P104)
使用cvCmp()创建一个掩码。加载一个真实的图像。使用cvsplit()将图像分割成红,绿,蓝三个单通道图像。
a.找到并显示绿图。
b.克隆这个绿图两次(分别命名为clone1和clone2)。
c.求出这个绿色平面的最大值和最小值。
d.将clone1的所有元素赋值为theash=(unsigned char)((最大值-最小值)/2.0)。
e.将clone2的所有元素复制为0,然后调用函数cvCmp(green_image,clone1,clone2,CV_CMP_GE)。现在clone2将是一个标识绿图中值超过thresh的掩码图像。
f.最后,使用cvSubS(green_image,thresh/2,green_image,clone2)函数并显示结果。
解答:
#include <cv.h>#include <highgui.h>int main(int argc, const char** argv){ IplImage* srcImg = cvLoadImage(argv[1]); //load the image if (!srcImg) { printf("cannot open the file...\n"); return -1; } IplImage* rImg = cvCreateImage(cvGetSize(srcImg), srcImg->depth, 1); IplImage* gImg = cvCreateImage(cvGetSize(srcImg), srcImg->depth, 1); IplImage* bImg = cvCreateImage(cvGetSize(srcImg), srcImg->depth, 1); //创建单通道r,g,b图像 IplImage* clone1 = cvCreateImage(cvGetSize(srcImg), srcImg->depth, 1); IplImage* clone2 = cvCreateImage(cvGetSize(srcImg), srcImg->depth, 1); double green_maxPixel = 0; double green_minPixel = 0; //绿色平面最大最小值 double thresh; //阈值thresh cvSplit(srcImg, rImg, gImg, bImg, 0); //拆分3通道 //-------------------a小题 ------------------ cvNamedWindow("GreenImage0"); cvShowImage("GreenImage0", gImg); //-------------------b小题--------------------- cvCopy(gImg, clone1); cvCopy(gImg, clone2); //copy the gImg to clone1 and clone2 //-----------------c小题求绿色平面最大最小值----------------- cvMinMaxLoc(gImg, &green_maxPixel, &green_minPixel); //-------------------d小题------------------------------- thresh = (unsigned char)(green_maxPixel - green_minPixel) / 2.0; cvSet(clone1, cvScalar(thresh)); //----------------------e小题----------------------- cvZero(clone2); cvCmp(gImg, clone1, clone2, CV_CMP_GE); //---------------------------f小题------------------- cvSubS(gImg, cvScalar(thresh / 2), gImg, clone2); cvNamedWindow("GreenImage1"); cvShowImage("GreenImage1", gImg); cvWaitKey(0); cvReleaseImage(&srcImg); cvReleaseImage(&rImg); cvReleaseImage(&gImg); cvReleaseImage(&bImg); cvDestroyWindow("GreenImage0"); cvDestroyWindow("GreenImage1"); return 0;}
0 0
- 《学习OpenCV》课后习题解答6
- 《学习OpenCV》课后习题解答1
- 《学习OpenCV》课后习题解答2
- 《学习OpenCV》课后习题解答3
- 《学习OpenCV》课后习题解答4
- 《学习OpenCV》课后习题解答5
- 《学习OpenCV》课后习题解答7
- 《学习OpenCV》课后习题解答8
- 《学习OpenCV》课后习题解答9
- 《学习OpenCV》课后习题解答(第三章)(仅供参考)
- 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
- 学习Opencv 第四章课后习题解答(Exercise 1a)
- 学习Opencv第3章课后习题
- 学习Opencv第2章课后习题
- 学习Opencv第4章课后习题
- 《学习opencv》第四章课后习题1
- 《学习opencv》第四章课后习题2
- 《学习opencv》第五章课后习题1
- hadoop fs.trash 详解
- Hibernate学习(1--8)
- 设置 xcode 上debug tab
- java按文件夹下日志容量大小删除部分日志
- 小技巧。
- 《学习OpenCV》课后习题解答6
- 利用注解初始化View对象
- javascript 闭包
- 字符编码笔记:ASCII,Unicode和UTF-8
- 保证线程的有序性,使用jion方法
- Yarn简单介绍及内存配置
- Redis 基本操作一
- MY_GEEK_计时器的timer实现
- android setClickable 不起作用 没有作用