【练习6.7】设置cvCanny的不同参数处理图像,对比结果

提纲
题目要求
程序代码
结果图片
要言妙道

题目要求:

通过设置cvCanny中好的低阈值和高阈值,使用三种不同的高低阈值比,分别为1.5:1 、2.75:1、4:1

a、设置高阈值小于50

b、设置50<高阈值<100

c、设置100<高阈值<150

e、设置200<高阈值<250

程序代码:

  1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点。
  2 //
  3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg
  4
  5
  6 #include "stdafx.h"
  7 #include <cv.h>
  8 #include <highgui.h>
  9 #include <iostream>
 10
 11 #include <opencv2/legacy/legacy.hpp>
 12 //#pragma comment(lib, "opencv_legacy2411.lib")
 13
 14 using namespace cv;
 15 using namespace std;
 16
 17 //函数声明-->--->-->--->-->--->-->--->//
 18
 19
 20 //<--<--<--<--<--<--<--<--<--函数声明//
 21
 22 int _tmain(int argc, _TCHAR* argv[])
 23 {
 24     const char * soutceFile = "D:\\Work\\Work_Programming\\Source\\Image\\OpenCVExerciseImage\\第6章\\建筑.jpg";
 25     IplImage * image_Resource = cvLoadImage(soutceFile, CV_LOAD_IMAGE_GRAYSCALE);
 26     assert(image_Resource);
 27
 28     cvNamedWindow("原始图像", CV_WINDOW_NORMAL);
 29     cvNamedWindow("题目_a_1", CV_WINDOW_NORMAL);
 30     cvNamedWindow("题目_a_2", CV_WINDOW_NORMAL);
 31     cvNamedWindow("题目_a_3", CV_WINDOW_NORMAL);
 32     cvNamedWindow("题目_b_1", CV_WINDOW_NORMAL);
 33     cvNamedWindow("题目_b_2", CV_WINDOW_NORMAL);
 34     cvNamedWindow("题目_b_3", CV_WINDOW_NORMAL);
 35     cvNamedWindow("题目_c_1", CV_WINDOW_NORMAL);
 36     cvNamedWindow("题目_c_2", CV_WINDOW_NORMAL);
 37     cvNamedWindow("题目_c_3", CV_WINDOW_NORMAL);
 38     //cvNamedWindow("题目_d_1", CV_WINDOW_NORMAL);
 39     //cvNamedWindow("题目_d_2", CV_WINDOW_NORMAL);
 40     //cvNamedWindow("题目_d_3", CV_WINDOW_NORMAL);
 41     cvNamedWindow("题目_e_1", CV_WINDOW_NORMAL);
 42     cvNamedWindow("题目_e_2", CV_WINDOW_NORMAL);
 43     cvNamedWindow("题目_e_3", CV_WINDOW_NORMAL);
 44
 45     cvShowImage("原始图像", image_Resource);
 46
 47     //---------------------------a:开始--------------------------------//
 48
 49     IplImage * image_Result_a = cvCloneImage(image_Resource);
 50     cvZero(image_Result_a);
 51
 52     double highThresh = 10;
 53     double lowThresh = highThresh / 1.5;
 54
 55     cvCanny(image_Resource, image_Result_a, highThresh, lowThresh, 3);
 56     cvShowImage("题目_a_1", image_Result_a);
 57
 58     lowThresh = highThresh / 2.75;
 59     cvZero(image_Result_a);
 60
 61     cvCanny(image_Resource, image_Result_a, highThresh, lowThresh, 3);
 62     cvShowImage("题目_a_2", image_Result_a);
 63
 64     lowThresh = highThresh / 4.0;
 65     cvZero(image_Result_a);
 66
 67     cvCanny(image_Resource, image_Result_a, highThresh, lowThresh, 3);
 68     cvShowImage("题目_a_3", image_Result_a);
 69
 70     //---------------------------a:结束--------------------------------//
 71
 72     //---------------------------b:开始--------------------------------//
 73
 74     IplImage * image_Result_b = cvCloneImage(image_Resource);
 75     cvZero(image_Result_b);
 76
 77     highThresh = 80;
 78     lowThresh = highThresh / 1.5;
 79
 80     cvCanny(image_Resource, image_Result_b, highThresh, lowThresh, 3);
 81     cvShowImage("题目_b_1", image_Result_b);
 82
 83     lowThresh = highThresh / 2.75;
 84     cvZero(image_Result_b);
 85
 86     cvCanny(image_Resource, image_Result_b, highThresh, lowThresh, 3);
 87     cvShowImage("题目_b_2", image_Result_b);
 88
 89     lowThresh = highThresh / 4.0;
 90     cvZero(image_Result_b);
 91
 92     cvCanny(image_Resource, image_Result_b, highThresh, lowThresh, 3);
 93     cvShowImage("题目_b_3", image_Result_b);
 94
 95     //---------------------------b:结束--------------------------------//
 96
 97     //---------------------------c:开始--------------------------------//
 98
 99     IplImage * image_Result_c = cvCloneImage(image_Resource);
100     cvZero(image_Result_c);
101
102     highThresh = 130;
103     lowThresh = highThresh / 1.5;
104
105     cvCanny(image_Resource, image_Result_c, highThresh, lowThresh, 3);
106     cvShowImage("题目_c_1", image_Result_c);
107
108     lowThresh = highThresh / 2.75;
109     cvZero(image_Result_c);
110
111     cvCanny(image_Resource, image_Result_c, highThresh, lowThresh, 3);
112     cvShowImage("题目_c_2", image_Result_c);
113
114     lowThresh = highThresh / 4.0;
115     cvZero(image_Result_c);
116
117     cvCanny(image_Resource, image_Result_c, highThresh, lowThresh, 3);
118     cvShowImage("题目_c_3", image_Result_c);
119
120     //---------------------------c:结束--------------------------------//
121
122     //---------------------------e:开始--------------------------------//
123
124     IplImage * image_Result_e = cvCloneImage(image_Resource);
125     cvZero(image_Result_e);
126
127     highThresh = 245;
128     lowThresh = highThresh / 1.5;
129
130     cvCanny(image_Resource, image_Result_e, highThresh, lowThresh, 3);
131     cvShowImage("题目_e_1", image_Result_e);
132
133     lowThresh = highThresh / 2.75;
134     cvZero(image_Result_e);
135
136     cvCanny(image_Resource, image_Result_e, highThresh, lowThresh, 3);
137     cvShowImage("题目_e_2", image_Result_e);
138
139     lowThresh = highThresh / 4.0;
140     cvZero(image_Result_e);
141
142     cvCanny(image_Resource, image_Result_e, highThresh, lowThresh, 3);
143     cvShowImage("题目_e_3", image_Result_e);
144
145     //---------------------------e:结束--------------------------------//
146
147     cvWaitKey(0);
148
149     cvReleaseImage(&image_Resource);
150     cvReleaseImage(&image_Result_a);
151     cvReleaseImage(&image_Result_b);
152     cvReleaseImage(&image_Result_c);
153     cvReleaseImage(&image_Result_e);
154
155     cvDestroyAllWindows();
156
157     return 0;
158 }

结果图片:

   
     
     
     

要言妙道:

①Canny推荐的上下限阈值比为2:1到3:1之间

时间: 04-30

【练习6.7】设置cvCanny的不同参数处理图像,对比结果的相关文章

smb设置参考手册 --详细参数

#----------------------------------------------------------------------------------## smb设置参考手册 ## ##----------------------------------------------------------------------------------# [global] #-------------------------------------------------------

RHCE 系列(二):如何进行包过滤、网络地址转换和设置内核运行时参数

正如第一部分(“设置静态网络路由”)提到的,在这篇文章(RHCE 系列第二部分),我们首先介绍红帽企业版 Linux 7(RHEL)中包过滤和网络地址转换(NAT)的原理,然后再介绍在某些条件发生变化或者需要变动时设置运行时内核参数以改变运行时内核行为. RHEL 7 中的网络包过滤 当我们讨论数据包过滤的时候,我们指防火墙读取每个试图通过它的数据包的包头所进行的处理.然后,根据系统管理员之前定义的规则,通过采取所要求的动作过滤数据包. 正如你可能知道的,从 RHEL 7 开始,管理防火墙的默认

安装jasperserver设置tomcat的JAVA_OPT参数

Linux平台 在<catalina_home>/bin下新建文件setenv.sh,内容如下: export JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:PermSize=32m"export JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=512m -Xss2m"export JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC

H.264解码过程剖析-4

x264开源工程实现H.264的视频编码,但没有提供对应的解码器.ffmpeg开源多媒体编解码集合汇集了市面上几乎所有媒体格式的编解码的源代码.其中的H264.c就是一个能正常解码x264编码码流的独立的源文件,其使用步骤也与上述的编码或解码CODEC应用案例基本相同.这一节通过自顶向下的方式,讲述H264.c如何实现H.264视频解码过程. H264.c源文件有几千行,代码量庞大,很不便于浏览.分析和移植.同时该文件还依赖其他源文件,组织结构较复杂,实现平台由于不是基于Windows的VC++

Oracle shared_pool_reserved_size参数设置说明

进入SQLPLUS,查询shared_pool,往往看到结果如下: SQL> show parameter shared_pool NAME                                    TYPE              VALUE------------------------------------ ----------- ------------------------------shared_pool_reserved_size           big in

flask客户端测试使用设置cookie参数

今天在对flask客户端进行测试,然后看到我们服务器端用请求前钩子写了这样的代码 @app.before_requestdef before_request(): session = request.cookies.get('P', '') 这段代码的意思是,在将请求发向flask路由的之前先运行这段代码,我们都知道要在requests里面设置cookies的参数只需要 import requests print requests.request('get', 'http://nuanhi.co

SHARED_POOL_RESERVED_SIZE参数的设置及作用 -ZHUANZAI

还有一个参数是需要提及的:shared_pool_reserved_size.该参数指定了保留的共享池空间,用于满足将来的大的连续的共享池空间请求.当共享池出现过多碎片,请求大块空间会导致Oracle大范围的查找并释放共享池内存来满足请求,由此可能会带来较为严重的性能下降,设置合适的shared_pool_reserved_size参数,结合_shared_pool_reserved_min_alloc参数可以用来避免由此导致的性能下降. 这个参数理想值应该大到足以满足任何对RESERVED L

修改默认的undo_retention参数设置

昨天,一个朋友的数据库数据被误操作删除掉了,请求我帮忙进行恢复. 数据库版本是Oracle10g Release 2的,我首先想到的是使用Flashback Query进行闪回恢复,不幸的是ORA-01555,数据已经不能被闪回了. 查看当时的数据库参数undo_retention设置,发现这个参数被在10g中缺省的被设置为900秒,这个时间长度是不足够的. 马上将这个参数修改为10800,3个小时: ALTER SYSTEM SET undo_retention=10800 SCOPE=BOT

Android如何在http头信息里设置参数

在使用http请求server时常常要传递一些参数给server,如IMEI号.平台号.渠道号.客户端的版本号等一些通用信息,像这些参数我们没有必要每次都拼在url后,我们可以统一添加到http头里. 1.HttpClient的设置http头的参数 HttpClient httpclient = new DefaultHttpClient(); httpclient.getParams().setParameter( CoreConnectionPNames.CONNECTION_TIMEOUT