《学习OpenCV》课后习题解答6
题目:(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;
}
《学习OpenCV》课后习题解答6的更多相关文章
- 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 课后习题解答
今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三的习题解答.笔者在做这些题目时遇到非常多困难,当我在网上寻找答案时却找不到,而林 ...
- 《学习OpenCV》课后习题解答8
题目:(P126) 本章完整讲述了基本的输入/输出编程以及OpenCV的数据结构.下面的练习是基于前面的知识做一些应用,为后面大程序的实现提供帮助. a.创建一个程序实现以下功能:(1)从视频文件中读 ...
- 《学习OpenCV》课后习题解答5
题目:(P104) 为一个图像创建多个图像头.读取一个大小至少为100*100的图像.另创建两个图像头并设置它们的origion,depth,nChannels和widthStep属性同之前读取的图像 ...
- 《学习OpenCV》课后习题解答4
题目:(P104) 练习使用感兴趣区域(ROI).创建一个210*210的单通道图像并将其归0.在图像中使用ROI和cvSet()建立一个增长如金字塔状的数组.也就是:外部边界为0,下一个内部边界应该 ...
- 《学习OpenCV》课后习题解答3
题目:(P104) 创建一个大小为100*100的三通道RGB图像.将它的元素全部置0.使用指针算法以(20,5)与(40,20)为项点绘制一个绿色平面. 解答: #include "cv. ...
- 《学习OpenCV》课后习题解答2
题目:(P104) 创建一个拥有三个通道的二维字节类型矩阵,大小为100*100,并将所有值赋为0.通过函数cvPtr2D将指针指向中间的通道("绿色").以(20,5)与(40, ...
- 《学习OpenCV》课后习题解答9
题目:(P126) 创建一个程序,使其读入并显示一幅图像.当用户鼠标点击图像时,获取图像对应像素的颜色值(BGR),并在图像上点击鼠标处用文本将颜色值显示出来. 解答: 本题关键是会用cvGet2D获 ...
- 《学习OpenCV》课后习题解答7
题目:(P105) 创建一个结构,结构中包含一个整数,一个CvPoint和一个 CvRect:称结构体为"my_struct". a. 写两个函数:void Write_my_st ...
- 《学习OpenCV》课后习题解答1
题目:(P104) 下面这个练习是帮助掌握矩阵类型.创造一个三通道二维矩阵,字节类型,大小为100*100,并设置所有数值为0. a.在矩阵中使用cvCircle( CvArr* img, CvPoi ...
随机推荐
- Wake-Sleep(W-S)算法【转载】
原文: https://www.zhihu.com/question/29648549 https://blog.csdn.net/zouxy09/article/details/8775518 en ...
- linux 通过 openconnect 来连接学校内网
参考 http://xingda1989.iteye.com/blog/1969908 https://blog.csdn.net/edin_blackpoint/article/details/70 ...
- 北京优步UBER司机B组最新奖励政策、高峰翻倍奖励、行程奖励、金牌司机奖励【每周更新】
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- P2934 [USACO09JAN]安全出行Safe Travel
P2934 [USACO09JAN]安全出行Safe Travel https://www.luogu.org/problemnew/show/P2934 分析: 建出最短路树,然后考虑一条非树边u, ...
- crash:EXC_ARM_DA_ALIGN(关于内存对齐,memcpy)
crash:EXC_ARM_DA_ALIGN(关于内存对齐,memcpy) 问题描述 在iOS game开发时做内存拷贝时出现了 crash:EXC_ARM_DA_ALIGN,debug版本不会出现, ...
- jQuery tableExport导出 excel
上篇写的是jQuery 导出word,就试试导出excel.看见网上写的很乱,我这就把我写的整理下来,有部分来自网上capy 1. js文件的引用 <script type="te ...
- uvaoj1585Score(暴力)
1585 ScoreThere is an objective test result such as “OOXXOXXOOO”. An ‘O’ means a correct answer of a ...
- XSS----payload,绕过,xss小游戏记录
一.XSS 1.原理:攻击者把恶意的脚本代码注入到网页中,等待其他用户浏览 这些网页(或触发其他条件),从而执行其中的恶意代码. 1.xss实例代码: test.html <!DOCTYPE h ...
- MySQL☞abs函数
abs( )函数:求出绝对值 格式: select abs(数值) from 表名 如下图:
- 感觉总结了一切python常见知识点,可直接运行版本
#encoding=utf-8#http://python.jobbole.com/85231/#作用域a=1def A(a): a=2 print 'A:',a def B(): print 'B: ...