opencv第四章
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第四章的更多相关文章
- 《学习OpenCV》练习题第四章第八题ab
这道题是利用OpenCV例子程序里自带的人脸检测程序,做点图像的复制操作以及alpha融合. 说明:人脸检测的程序我参照了网上现有的例子程序,没有用我用的OpenCV版本(2.4.5)的facedet ...
- 《学习OpenCV》练习题第四章第三题b
#include <highgui.h> #include <cv.h> #include "opencv_libs.h" /* *<学习OpenCV ...
- 《学习OpenCV》练习题第四章第三题a
#include <highgui.h> #include <cv.h> #include "opencv_libs.h" #pragma comment ...
- 《学习OpenCV》练习题第四章第二题
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- 《学习OpenCV》练习题第四章第一题b&c
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- 《学习OpenCV》练习题第四章第一题a
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- 《学习OpenCV》练习题第四章第七题abc
题外话:一直是打算把这本书的全部课后编程题写完的,中间断了几个月,一直忙于其他事.现在开始补上. 这道题我不清楚我理解的题意是不是正确的,这道题可以练习用OpenCV实现透视变换(可以用于矫正在3维环 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 《Linux内核设计与实现》读书笔记 第四章 进程调度
第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统.调度程序是多任务操作系统的基础.通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的 ...
随机推荐
- POJ 2182 / HDU 2711 Lost Cows(平衡树)
Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...
- ubuntu中执行truffle build出现问题
进行build之前,采用默认构建器方式创建客户端,先安装默认构建器: npm install truffle-default-builder --save 然后需要修改truffle.js配置文件如下 ...
- lintcode-106-排序列表转换为二分查找树
106-排序列表转换为二分查找树 给出一个所有元素以升序排序的单链表,将它转换成一棵高度平衡的二分查找树 样例 标签 递归 链表 思路 类似于二分查找,每次将链表二分,中间节点作为根节点,在建立左子树 ...
- Sublime Text 2.0.2 注册码激活
直接输入注册码就可以了 ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 ...
- [Leetcode] Reorder list 重排链表
Given a singly linked list L: L 0→L 1→…→L n-1→L n,reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→… You ...
- MySQL:BlackHole
MySQL:BlackHole 顾名思义BlackHole就是黑洞,只有写入没有输出.现在就来实验一下吧 首先查看一下MySQL支持的存储引擎 mysql> show engines;+---- ...
- [poj 2104]主席树+静态区间第k大
题目链接:http://poj.org/problem?id=2104 主席树入门题目,主席树其实就是可持久化权值线段树,rt[i]维护了前i个数中第i大(小)的数出现次数的信息,通过查询两棵树的差即 ...
- java的多构造函数的处理方式
/** * */ package P; import java.awt.List; import java.lang.reflect.Array; import java.util.ArrayList ...
- linux启动一个web项目时验证码不能出现的问题的解决
解决方法: 在tomcatcatalina.sh中搜索cygwin=false,然后在它的上面加上这句话JAVA_OPTS='-Djava.awt.headless=true' 具体参考如下图片: 然 ...
- yaml语法
http://blog.csdn.net/mack415858775/article/details/51015662 name: Tom Smith age: 37 spouse: name: Ja ...