`
helloyesyes
  • 浏览: 1310372 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

OpenCV实例:Canny边缘检测

阅读更多

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边缘检测实例下载

    OpenCV之Canny边缘检测是图像处理中的一个重要概念,它是一种多级边缘检测算法,由John F. Canny在1986年提出。该算法以其高效性和准确性著称,被广泛应用于计算机视觉、图像分析和机器学习等领域。Canny边缘检测...

    opencv canny边缘检测

    **OpenCV Canny边缘检测详解** Canny边缘检测是一种经典的图像处理算法,广泛应用于计算机视觉、图像分析和机器学习等领域。由John F. Canny在1986年提出,该算法旨在找到图像中的最显著边缘,同时尽可能减少误检和...

    基于MFC的OpenCV的实例canny算法实现

    **OpenCV与MFC结合实现Canny边缘检测** 在计算机视觉领域,OpenCV是一个强大的库,它提供了大量的图像处理和计算机视觉功能。Canny边缘检测是OpenCV中的一个经典算法,用于找出图像中的边缘。MFC(Microsoft ...

    Android studio opencv环境配置及边缘检测实例

    Android Studio 中 Opencv 环境配置及边缘检测实例 Opencv 是一个计算机视觉库,提供了大量的图像处理和计算机视觉算法,广泛应用于图像处理、机器人视觉、目标检测等领域。 Android Studio 是一个集成开发环境,...

    摄像头读取画面opencv用canny边缘化

    在这个实例中,我们将深入探讨如何利用OpenCV库在C++环境中,通过摄像头读取实时画面,并应用Canny边缘检测算法来提取图像的边缘。 **一、摄像头读取** OpenCV中的`VideoCapture`类是处理视频流的核心工具,包括从...

    opencv之处理边缘实例下载

    - **Canny算法**:Canny边缘检测是最常用的方法之一,它通过高斯滤波、计算梯度幅度和方向、非极大值抑制以及双阈值检测来寻找强边缘和弱边缘。 - **Sobel算子**:Sobel算子利用两个方向的差分模板进行卷积,得到...

    opencv canny算子实例

    在这个实例中,我们将关注 OpenCV 中的 Canny 边缘检测算子,这是一个广泛用于图像处理的算法,尤其在寻找图像中的边缘时。Canny 算子是基于多尺度的边缘检测方法,它通过一系列步骤来检测并细化图像的边缘。 首先...

    对话框picture控件显示图片OpenCV加canny检测

    在本文中,我们将深入探讨如何在MFC(Microsoft Foundation Classes)的对话框中使用Picture控件来显示图片,并结合OpenCV库进行Canny边缘检测。首先,我们需要理解对话框、Picture控件、OpenCV以及Canny算法的基本...

    ios-opencv边缘检测

    本项目"ios-opencv边缘检测"就是这样一个实例,它使用Xcode构建了一个完整的iOS应用,专注于通过OpenCV实现图像的边缘检测。下面将详细阐述这个项目中的关键知识点。 1. **iOS开发环境**:项目基于Apple的Xcode集成...

    iOS opencv动态边缘检测

    OpenCV库提供了一系列高效的算法来实现这一功能,例如Canny边缘检测、Sobel、Laplacian等。 **1. iOS集成OpenCV** 要在iOS项目中使用OpenCV,首先需要通过CocoaPods或者Carthage进行依赖管理工具集成。在Podfile中...

    Canny边缘检测算法在机器人视觉中的应用.docx

    在L2BOT视觉机器人实例中,Canny边缘检测被用于条形码和障碍物的识别。条形码是一种常见的标识符,机器人通过识别条形码可以理解其位置信息,执行特定任务。障碍物识别则关乎机器人的自主导航,边缘检测可以帮助...

    OpenCV实例程序源代码-边缘检测Canny的用法.c

    OpenCV实例程序源代码-边缘检测Canny的用法.c

    使用opencv的canny算法提取边缘

    在OpenCV中,我们可以通过`cv2.Canny()`函数来实现Canny边缘检测。这个函数的参数包括输入图像、两个阈值(low_threshold 和 high_threshold)、磁带宽度(aperture_size,用于Sobel算子)和L2梯度标志(是否使用L2...

    刘瑞祯, 于仕琪编著 OpenCV教程:基础篇 实例源代码

    例如,通过分析边缘检测的代码,你可以理解Canny算法的工作机制;在实践物体识别时,你将接触模板匹配和特征匹配的概念,如SIFT和SURF。 为了更好地利用这些源代码,建议你按照以下步骤进行: 1. 阅读相关的章节,...

    Canny检测边缘

    在本实例中,我们将在Visual Studio 2010环境下利用OpenCV库来实现Canny边缘检测。 首先,理解Canny算法的核心步骤至关重要: 1. **高斯滤波**:为了消除图像中的噪声,Canny算法的第一步是对原始图像进行高斯滤波...

    Canny边缘检测算子研究及其在医学图像中的应用

    ### Canny边缘检测算子研究及其在医学图像中的应用 #### 一、引言 边缘检测作为图像处理领域的一个重要分支,在多种应用场景中扮演着关键角色。尤其在医学图像处理中,通过精确地识别和提取图像中的边缘信息,能够...

    Canny_openvc

    提供的文档"vs2010+MFC+OpenCV实现Canny边缘检测.doc"可能包含了更详细的步骤说明和代码示例,而"Canny_Openvc.zip"可能包含了一个已完成的项目实例,供你参考和学习。 通过这个项目,你可以掌握如何在实际开发环境...

    2.2 在MFC中如何应用菜单,和Canny算子的实例视频

    总之,本课程将通过实例演示如何在MFC环境中创建菜单,并结合OpenCV库实现Canny边缘检测,从而帮助你提升Windows桌面应用程序的开发技能和计算机视觉的实践能力。通过学习和实践,你将能够自如地在MFC程序中集成图像...

    在MFC中如何应用菜单,和Canny算子的实例升级版

    在MFC(Microsoft Foundation Classes)框架中应用菜单和利用OpenCV库执行Canny边缘检测是两种常见的编程任务,尤其在开发Windows桌面应用程序时。本文将详细介绍如何在MFC项目中集成菜单系统,并解决使用OpenCV进行...

    canny算子c#实例

    在C#中实现Canny边缘检测,可以借助于AForge.NET或OpenCV等库。 一、Canny边缘检测步骤 1. **高斯滤波**:首先,使用高斯滤波器平滑图像,去除噪声。这一步是可选的,但通常推荐,因为它减少了后续步骤中的虚假...

Global site tag (gtag.js) - Google Analytics