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. 软工实践Beta冲刺(2/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  2. chromium源码阅读

    linux下chromium的入口函数在文件:src/chrome/app/chrome_exe_main_aura.cc 中 int main(int argc, const char** argv ...

  3. 搭建Hadoop环境(一)

    我用SecureCRT作为客户端,链接虚拟机做的服务器,我用的桥接,所以把主机的一个端口映射到虚拟机22端口上去,

  4. 二分查找 Binaryserach

    二分查找: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升 ...

  5. BZOJ4590 SHOI2015自动刷题机(二分答案)

    二分答案,分别往尽量小的和尽量大的二分即可. #include<iostream> #include<cstdio> #include<cmath> #includ ...

  6. P4109 [HEOI2015]定价

    题目描述 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商 ...

  7. 洛谷P3806 【模板】点分治1 【点分治】

    题目背景 感谢hzwer的点分治互测. 题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在. 输入输出格式 输入格式: n,m 接下来n-1条边a,b,c描述a到b有一条长度为c的路径 接 ...

  8. 洛谷 P1415 拆分数列 解题报告

    拆分数列 题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数. 如果有多组解,则输出使得最后一个 ...

  9. loj2540 「PKUWC 2018」随机算法

    pkusc 快到了--做点题涨涨 rp. 记 \(f(S,i)\) 表示 \(S\) 这个集合是决计不能选的(要么属于独立集,要么和独立集相连),或称已经考虑了的,\(i\) 表示此集合对应的最大独立 ...

  10. 实际上ECMAScript中并没有对类的定义

    首先,我们用一个经典例子来简单阐述一下ECMAScript中的继承机制. 在几何学上,实质上几何形状只有两种,即椭圆形(是圆形的)和多边形(具有一定数量的边).圆是椭圆的一种,它只有一个焦点.三角形. ...