1.载入一个带有有趣纹理的图像,使用cvSmooth()函数以多种方法平滑图像,参数为smoothtype = CV_GAUSSIAN.

a.使用对称的平滑的平滑窗口,大小依次是3x3,5x5,9x9,11x11,并显示结果。

b.用5x5高斯滤净器平滑图像两次和用两次11x11平滑器平滑一次的输出结果是最接近相同吗?为什么?

#include <cv.h>
#include <highgui.h>
int main()
{
IplImage *img = cvLoadImage("3.jpg", );
cvNamedWindow("原图", );
cvShowImage("原图", img);
IplImage *three = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
IplImage *five = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
IplImage *double_five = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
IplImage *nine = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
IplImage *eleven = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
IplImage *double_eleven = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels); cvSmooth(img, three, CV_GAUSSIAN, , );
cvSmooth(img, five, CV_GAUSSIAN, , );
cvSmooth(img, nine, CV_GAUSSIAN, , );
cvSmooth(img, eleven, CV_GAUSSIAN, , );
cvSmooth(five, double_five, CV_GAUSSIAN, , );
cvSmooth(eleven, double_eleven, CV_GAUSSIAN, , );
cvNamedWindow("three", );
cvNamedWindow("five", );
cvNamedWindow("nine", );
cvNamedWindow("eleven", );
cvNamedWindow("double_five", );
cvNamedWindow("double_eleven", );
cvShowImage("three", three);
cvShowImage("five", five);
cvShowImage("nine", nine);
cvShowImage("eleven", eleven);
cvShowImage("double_five", double_five);
cvShowImage("double_eleven", double_eleven);
cvWaitKey();
cvReleaseImage(&img);
cvReleaseImage(&three);
cvReleaseImage(&five);
cvReleaseImage(&double_five);
cvReleaseImage(&nine);
cvReleaseImage(&eleven);
cvReleaseImage(&double_eleven);
cvDestroyAllWindows();
return ;
}

2.

#include <cv.h>
#include <highgui.h>
int main()
{
IplImage *img = cvCreateImage(cvSize(, ), IPL_DEPTH_8U, );
IplImage *five = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
IplImage *nine = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
cvZero(img);
cvNamedWindow("main1", );
cvShowImage("main1", img);
for (int i = ; i <= ; i++)
{
uchar *ptr = (uchar*)(img->imageData + i*img->widthStep);
for (int j = ; j <= ; j++)
{
ptr[j] = 0xff;
}
}
cvNamedWindow("main", );
cvShowImage("main", img); cvSmooth(img, five, CV_GAUSSIAN,,);
cvSmooth(five, five, CV_GAUSSIAN, , ); cvNamedWindow("five", );
cvShowImage("five", five); cvSmooth(five, nine, CV_GAUSSIAN, , );
cvNamedWindow("nine", );
cvShowImage("nine", nine);
cvWaitKey(); cvReleaseImage(&img);
cvReleaseImage(&five);
cvReleaseImage(&nine);
cvDestroyAllWindows();
return ;
}

4.

#include <cv.h>
#include <highgui.h>
int main()
{
IplImage *img1 = cvLoadImage("111.jpg", );
IplImage *img2 = cvLoadImage("112.jpg", );
IplImage *img3 = cvCreateImage(cvSize(img1->width, img1->height), img1->depth, img1->nChannels);
IplImage *img4 = cvCreateImage(cvSize(img1->width, img1->height), img1->depth, img1->nChannels);
IplImage *img5 = cvCreateImage(cvSize(img1->width, img1->height), img1->depth, img1->nChannels);
cvSub(img1, img2,img3,NULL);//img1 - img2
cvAbs(img3, img3); // img3 的绝对值 cvDilate(img3, img4, NULL, ); //膨胀处理
cvErode(img4, img5, NULL, ); //腐蚀操作
cvNamedWindow("111.jpg", );
cvNamedWindow("112.jpg", );
cvNamedWindow("img3", );
cvNamedWindow("img4", );
cvNamedWindow("img5", );
cvShowImage("111.jpg", img1);
cvShowImage("112.jpg", img2);
cvShowImage("img3", img3);
cvShowImage("img4", img4);
cvShowImage("img5", img5);
cvWaitKey();
cvReleaseImage(&img1);
cvReleaseImage(&img2);
cvReleaseImage(&img3);
cvReleaseImage(&img4);
cvReleaseImage(&img5);
cvDestroyAllWindows();
return ;
}

5

#include <cv.h>
#include <highgui.h>
int main()
{
IplImage *img1 = cvLoadImage("100.jpg", CV_LOAD_IMAGE_GRAYSCALE);
IplImage *img2 = cvLoadImage("101.jpg", CV_LOAD_IMAGE_GRAYSCALE);
IplImage *img3 = cvCreateImage(cvGetSize(img1), img1->depth, img1->nChannels);
IplImage *img4 = cvCreateImage(cvGetSize(img1), img1->depth, img1->nChannels);
IplImage *img5 = cvCreateImage(cvGetSize(img1), img1->depth, img1->nChannels);
cvSub(img1, img2, img3, NULL);//img1 - img2 = img3
cvAbs(img3, img3); //img3 的绝对值
cvThreshold(img3, img4, , , CV_THRESH_BINARY_INV); //对img3进行二进制阀值操作
IplConvKernel *element = cvCreateStructuringElementEx(, , , , CV_SHAPE_RECT, NULL);//自定义核
cvMorphologyEx(img4, img5, NULL, element, CV_MOP_OPEN, );//进行开运算
cvReleaseStructuringElement(&element); //释放核
cvNamedWindow("img1", );
cvNamedWindow("img2", );
cvNamedWindow("img3", );
cvNamedWindow("img4", );
cvNamedWindow("img5", );
cvShowImage("img1", img1);
cvShowImage("img2", img2);
cvShowImage("img3", img3);
cvShowImage("img4", img4);
cvShowImage("img5", img5);
cvWaitKey();
cvReleaseImage(&img1);
cvReleaseImage(&img2);
cvReleaseImage(&img3);
cvReleaseImage(&img4);
cvReleaseImage(&img5);
cvDestroyAllWindows();
return ;
}

opencv第四章的更多相关文章

  1. 《学习OpenCV》练习题第四章第八题ab

    这道题是利用OpenCV例子程序里自带的人脸检测程序,做点图像的复制操作以及alpha融合. 说明:人脸检测的程序我参照了网上现有的例子程序,没有用我用的OpenCV版本(2.4.5)的facedet ...

  2. 《学习OpenCV》练习题第四章第三题b

    #include <highgui.h> #include <cv.h> #include "opencv_libs.h" /* *<学习OpenCV ...

  3. 《学习OpenCV》练习题第四章第三题a

    #include <highgui.h> #include <cv.h> #include "opencv_libs.h" #pragma comment ...

  4. 《学习OpenCV》练习题第四章第二题

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  5. 《学习OpenCV》练习题第四章第一题b&c

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  6. 《学习OpenCV》练习题第四章第一题a

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  7. 《学习OpenCV》练习题第四章第七题abc

    题外话:一直是打算把这本书的全部课后编程题写完的,中间断了几个月,一直忙于其他事.现在开始补上. 这道题我不清楚我理解的题意是不是正确的,这道题可以练习用OpenCV实现透视变换(可以用于矫正在3维环 ...

  8. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  9. 《Linux内核设计与实现》读书笔记 第四章 进程调度

    第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统.调度程序是多任务操作系统的基础.通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的 ...

随机推荐

  1. BZOJ 2333 SCOI2011 棘手的操作 并查集+可并堆

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2333 ..题意概述就不写了,各位老爷如果是看着玩的可以去搜一下,如果是做题找来的也知道题干 ...

  2. [持续补充]开发过程中常见bug查找思路

    文件夹下载不下来或者无法访问,很多时候是因为没有该文件夹的权限,或者没有将该文件夹挂载到对应docker下. 远程服务器和本地服务器测试结果不同,需要排查代码是否是git上同一版本的代码. 代码相同, ...

  3. 程序运行bug查看

    1.左击计算机进入管理,点击windows日志,查看程序信息. 可以方便看到报错信息.

  4. 简明Python3教程 1.介绍

    Python是少有的几种既强大又简单的编程语言.你将惊喜地发现通过使用Python即可轻松专注于解决问题而非和你所用的语言格式与结构. 下面是Python的官方介绍: Python is an eas ...

  5. PokeCats开发者日志(七)

      现在是PokeCats游戏开发的第十二天的晚上,很不幸提交到的三个平台(360开放平台,腾讯开放平台,华为应用市场)都没通过,著作权申请也被打回来了.   心中一万只草泥马在奔腾.   得了,看来 ...

  6. 微信小程序开发中怎么设置转发(分享)的信息

    如果什么都不设置,转发时默认名称是小程序的名称,转发的图片显示的是当前页面的截图,如图一 如何在自定义转发信息呢? 在进行转发的页面中: Page({ onShareAppMessage: funct ...

  7. Intellij IDEA 系统路径配置

    在使用IDEA启动Tomcat的时候,会读取系统路径,默认路径可能不是我们想要的,可以修改 C:\MyPrograms\IntelliJ IDEA 14.0.1\bin\idea.properties ...

  8. hdu 3496 Watch The Movie (二维背包)

    Watch The Movie Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)T ...

  9. 洛谷 P2894 [USACO08FEB]酒店Hotel 解题报告

    P2894 [USACO08FEB]酒店Hotel 题目描述 The cows are journeying north to Thunder Bay in Canada to gain cultur ...

  10. [BZOJ 2438] [中山市选2011]杀人游戏 Tarjan缩点

    这个题很容易想到正解就是缩点找入度为零的点,那么我们考虑一种特殊情况就是,一个入度为零的点我们不访问他就知道他是不是凶手,那么这样的话就是:I. 他是一个真·孤立的点 II. 他在图里但是在他的强联通 ...