【练习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之间

时间: 2025-01-02 18:26:18

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

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

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

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

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

微信分享到朋友圈,分享给好友设置标题图片描述参数

var imgUrl = "http://xxxxx.com/activity/images/logo.jpg"; var lineLink = window.location.href; var descContent = '来宜人贷参与抢钱活动100%获得10000金币,还可以兑换成现金哦~'; var shareTitle = '来宜人贷 拼人品抢现金'; var appid = 'wx237b223ad5773cf5'; function shareFriend() { Wei

bboss持久层设置数据库查询fetchsize参数方法

jdbc驱动程序api提供了指定了查询语句fetchsize的方法,有些数据库(比如oracle)本身提供了fetchsize的默认值,这样进行大量数据查询时,不会因为返回的结果集太大导致jvm爆掉,有些数据库可能没有默认设置fetchsize,因此需要手动指定.bboss持久层设置数据库查询fetchsize参数方法很简单,只要在poolman.xml文件的datasource中指定一个queryfetchsize参数即可,如果不指定就采用数据库驱动提供的默认值. 设置queryfetchsi

?Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1.2语言快速入门v2.0. [示例7-11]以下的代码就为外部参数toString.withJoiner设置了默认的参数"Swift"和"---".代码如下: import Foundation func join(string s1: String, toString

设置Maven的JVM参数

引言: Maven工具提供了非常强大且简便的项目管理方式,包括编译.打包.发布和部署等诸多的功能:针对Java应用来说,时常在测试环境中,在Eclipse中进行部署时,出现各种内存溢出的JVM错误,一般来说需要进行JVM的设置,那怎么来设置呢? 1.  问题的引出 在基于Maven管理的Java项目中,基于maven在IDE中直接继续开发测试,经常出现内存溢出的错误,这种情况下,需要进行JVM的参数设置更新,一般而言,都是根据内存溢出问题的不同,针对内存.permspace来进行调整和设置. 2

qmake的使用(可设置c编译器flag参数)

本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso***还是先说一下当前的系统环境:Ubuntu 14.04 + Qt5.4如果没有安装过QT,可以安装下面几个qt软件 sudo apt-get install qt5-default qt5-doc-html qt5-qmake qt5-doc qt5-image-formats-plugins 这只是对qmake使用的一个说明而已.如果一直使用Qt Create来构建工程,很容易让人以为Qt项目必须使用Qt C

eclipse 默认jdk 的设置 eclipse.ini -vm 参数

eclipse 的配置文件 eclipse.ini 不仅仅可以设置eclipse的堆栈内存大小,也可设置默认使用的jdk版本. 一.现有个eclipse 默认启动jdk版本是jdk1.5,需更改为1.6 步骤如下:方法1:打开eclipse.ini 文件,在-vmargs 参数的前面,一定是前面,添加如下代码:-vm/home/david/scfjava/jdk1.6.0_02/bin/javaw.exe注:分两行,格式不可变.重新启动eclipse,新建一个workspace .此时可以通过w

centos 中设置网卡等相关参数

转:Centos启动和禁用网卡命令 ifup.ifdown:linux命令 实时地手动修改一些网络接口参数,可以利用ifconfig来实现,如果是要直接以配置文件,在  /etc/sysconfig/network-scripts里面的ifcfg-ethx等文件的设置参数来启动的话,那就得要通过ifdown或 ifup来实现了. [[email protected] ~]# ifup {interface}        //启动网卡命令[[email protected] ~]# ifdown