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内核设计与实现》读书笔记 第四章 进程调度
第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统.调度程序是多任务操作系统的基础.通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的 ...
随机推荐
- Week2 Teamework from Z.XML 软件分析与用户需求调查(四)Bing桌面及助手的现状与发展
一.Bing搜索的相关背景 第一,必应搜索前几年的发展重点在于欧美市场,并且取得了一定的成效:根据 Hitwise 的统计数据,Bing 在 2011年3 月份市场占有率突破了 30% 大关,达到 3 ...
- (转载)MYSQL千万级数据量的优化方法积累
转载自:http://blog.sina.com.cn/s/blog_85ead02a0101csci.html MYSQL千万级数据量的优化方法积累 1.分库分表 很明显,一个主表(也就是很重要的表 ...
- C#故事
C# 在腾讯的发展 <先定个小目标, 使用C# 开发的千万级应用> Xamarin 携程使用.Net技术 分布式高并发redis MQ dubbo kafka zookeeper
- BZOJ1975 SDOI2010魔法猪学院(启发式搜索+最短路+堆)
对反图跑最短路求出每个点到终点的最短路径,令其为估价函数大力A*,第k次到达某个点即是找到了到达该点的非严格第k短路,因为估价函数总是不大于实际值.bzoj可能需要手写堆.正解是可持久化可并堆,至今是 ...
- poj 1753 Flip Game (dfs)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28805 Accepted: 12461 Descr ...
- POJ 3693 Maximum repetition substring(最多重复次数的子串)
Maximum repetition substring Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10461 Ac ...
- 2018牛客多校第一场 D.Two Graphs
题意: n个点,m1条边的图E1,n个点,m2条边的图E2.求图E2有多少子图跟图E1同构. 题解: 用STL的全排列函数next_permutation()枚举映射.对于每一种映射枚举每一条边判断合 ...
- BZOJ 2178 圆的面积并 ——Simpson积分
[题目分析] 史上最良心样例,史上最难调样例. Simpson积分硬上. 听说用long double 精度1e-10才能过. 但是double+1e-6居然过了. [代码] #include < ...
- 统计无符号整数二进制中1的个数(Hamming weight)
1.问题来源 之所以来记录这个问题的解法,是因为在在线编程中经常遇到,比如编程之美和京东的校招笔试以及很多其他公司都累此不疲的出这个考题.看似简单的问题,背后却隐藏着很多精妙的解法.查找网上资料,才知 ...
- Js跑马灯效果 && 在Vue中使用
DEMO: <!DOCTYPE html><html> <head> <title>滚动播报</title> <meta charse ...