1.新建项目
启动Code::Blocks,选择File->New->Project, 项目类型选择:Console Application,项目名为:MyCanny,其他按默认选择。
2. 代码
打开main.cpp文件,输入以下代码:
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
char wndname[] = "Edge";
char tbarname[] = "Threshold";
IplImage *image = 0, *cedge = 0, *gray = 0, *edge = 0;
// define a trackbar callback
void on_trackbar(int h)
{
cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 );
cvNot( gray, edge );
// Run the edge detector on grayscale
cvCanny(gray, edge, (float)h, (float)h*3, 3);
cvZero( cedge );
// copy edge points
cvCopy( image, cedge, edge );
cvShowImage(wndname, cedge);
}
int main( int argc, char** argv )
{
char* filename = argc == 2 ? argv[1] : (char*)"lena.jpg";
int edge_thresh = 1;
if( (image = cvLoadImage( filename, 1)) == 0 )
return -1;
// Create the output image
cedge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 3);
// Convert to grayscale
gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
edge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
cvCvtColor(image, gray, CV_BGR2GRAY);
// Create a window
cvNamedWindow(wndname, 1);
// create a toolbar
cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar);
// Show the image
on_trackbar(0);
// Wait for a key stroke; the same function arranges events processing
cvWaitKey(0);
cvReleaseImage(&image);
cvReleaseImage(&gray);
cvReleaseImage(&edge);
cvDestroyWindow(wndname);
return 0;
}
3. 设置
打开Project-〉Build Options选项卡
选择Search directories,在Compiler里Add进之前安装的OpenCV的include目录
在Linker里Add进lib目录。
选择Linker settings,将lib目录下的所有文件添加进去。
4. 编译
点击Build->Build编译项目。
5. 运行
将lena.jpg复制到MyCanny项目根目录下(为了方便,可不做)。
打开Project-〉Set programs‘ arguments,在Program arguments里输入图片的地址。
点击Build-〉Run
运行效果:
总结:
使用OpenCV,只用了几十行代码就实现了边缘检测功能,可见OpenCV的强大。使用OpenCV可以大大降低开发图形图像处理程序的复杂程度,可以使开发人员专心于具体功能的开发,而又能使用图形图像领域专家的算法来处理。
由于算法的通用性,目前在精度上还有一定的不足,上面的例子虽然检测出了边缘,但是在完整性和连续性上还有不足,有遗漏和缺失的现象存在,如果要用于实际的应用,可能还需要自己的二次开发。
分享到:
相关推荐
OpenCV之Canny边缘检测是图像处理中的一个重要概念,它是一种多级边缘检测算法,由John F. Canny在1986年提出。该算法以其高效性和准确性著称,被广泛应用于计算机视觉、图像分析和机器学习等领域。Canny边缘检测...
**OpenCV Canny边缘检测详解** Canny边缘检测是一种经典的图像处理算法,广泛应用于计算机视觉、图像分析和机器学习等领域。由John F. Canny在1986年提出,该算法旨在找到图像中的最显著边缘,同时尽可能减少误检和...
**OpenCV与MFC结合实现Canny边缘检测** 在计算机视觉领域,OpenCV是一个强大的库,它提供了大量的图像处理和计算机视觉功能。Canny边缘检测是OpenCV中的一个经典算法,用于找出图像中的边缘。MFC(Microsoft ...
Android Studio 中 Opencv 环境配置及边缘检测实例 Opencv 是一个计算机视觉库,提供了大量的图像处理和计算机视觉算法,广泛应用于图像处理、机器人视觉、目标检测等领域。 Android Studio 是一个集成开发环境,...
在这个实例中,我们将深入探讨如何利用OpenCV库在C++环境中,通过摄像头读取实时画面,并应用Canny边缘检测算法来提取图像的边缘。 **一、摄像头读取** OpenCV中的`VideoCapture`类是处理视频流的核心工具,包括从...
- **Canny算法**:Canny边缘检测是最常用的方法之一,它通过高斯滤波、计算梯度幅度和方向、非极大值抑制以及双阈值检测来寻找强边缘和弱边缘。 - **Sobel算子**:Sobel算子利用两个方向的差分模板进行卷积,得到...
在这个实例中,我们将关注 OpenCV 中的 Canny 边缘检测算子,这是一个广泛用于图像处理的算法,尤其在寻找图像中的边缘时。Canny 算子是基于多尺度的边缘检测方法,它通过一系列步骤来检测并细化图像的边缘。 首先...
在本文中,我们将深入探讨如何在MFC(Microsoft Foundation Classes)的对话框中使用Picture控件来显示图片,并结合OpenCV库进行Canny边缘检测。首先,我们需要理解对话框、Picture控件、OpenCV以及Canny算法的基本...
本项目"ios-opencv边缘检测"就是这样一个实例,它使用Xcode构建了一个完整的iOS应用,专注于通过OpenCV实现图像的边缘检测。下面将详细阐述这个项目中的关键知识点。 1. **iOS开发环境**:项目基于Apple的Xcode集成...
OpenCV库提供了一系列高效的算法来实现这一功能,例如Canny边缘检测、Sobel、Laplacian等。 **1. iOS集成OpenCV** 要在iOS项目中使用OpenCV,首先需要通过CocoaPods或者Carthage进行依赖管理工具集成。在Podfile中...
在L2BOT视觉机器人实例中,Canny边缘检测被用于条形码和障碍物的识别。条形码是一种常见的标识符,机器人通过识别条形码可以理解其位置信息,执行特定任务。障碍物识别则关乎机器人的自主导航,边缘检测可以帮助...
OpenCV实例程序源代码-边缘检测Canny的用法.c
在OpenCV中,我们可以通过`cv2.Canny()`函数来实现Canny边缘检测。这个函数的参数包括输入图像、两个阈值(low_threshold 和 high_threshold)、磁带宽度(aperture_size,用于Sobel算子)和L2梯度标志(是否使用L2...
例如,通过分析边缘检测的代码,你可以理解Canny算法的工作机制;在实践物体识别时,你将接触模板匹配和特征匹配的概念,如SIFT和SURF。 为了更好地利用这些源代码,建议你按照以下步骤进行: 1. 阅读相关的章节,...
在本实例中,我们将在Visual Studio 2010环境下利用OpenCV库来实现Canny边缘检测。 首先,理解Canny算法的核心步骤至关重要: 1. **高斯滤波**:为了消除图像中的噪声,Canny算法的第一步是对原始图像进行高斯滤波...
### Canny边缘检测算子研究及其在医学图像中的应用 #### 一、引言 边缘检测作为图像处理领域的一个重要分支,在多种应用场景中扮演着关键角色。尤其在医学图像处理中,通过精确地识别和提取图像中的边缘信息,能够...
提供的文档"vs2010+MFC+OpenCV实现Canny边缘检测.doc"可能包含了更详细的步骤说明和代码示例,而"Canny_Openvc.zip"可能包含了一个已完成的项目实例,供你参考和学习。 通过这个项目,你可以掌握如何在实际开发环境...
总之,本课程将通过实例演示如何在MFC环境中创建菜单,并结合OpenCV库实现Canny边缘检测,从而帮助你提升Windows桌面应用程序的开发技能和计算机视觉的实践能力。通过学习和实践,你将能够自如地在MFC程序中集成图像...
在MFC(Microsoft Foundation Classes)框架中应用菜单和利用OpenCV库执行Canny边缘检测是两种常见的编程任务,尤其在开发Windows桌面应用程序时。本文将详细介绍如何在MFC项目中集成菜单系统,并解决使用OpenCV进行...
在C#中实现Canny边缘检测,可以借助于AForge.NET或OpenCV等库。 一、Canny边缘检测步骤 1. **高斯滤波**:首先,使用高斯滤波器平滑图像,去除噪声。这一步是可选的,但通常推荐,因为它减少了后续步骤中的虚假...