`

OpenCV 轮廓检测

 
阅读更多

使用OpenCV可以对图像的轮廓进行检测。这是之前用过的代码,挺简单的,回顾一下。主要要进行以下2步操作:

1.cvThreshold():对图像进行二值化处理

2.cvFindContours():查找图像轮廓

注意:这个过程中图像要转化为灰度图。

 

/***********************************************************************
	雷霄骅
 ***********************************************************************/
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
 
int main( int argc, char** argv )
{
  //声明IplImage指针
  IplImage* pImg = NULL; 
  IplImage* pContourImg = NULL;
 
  CvMemStorage * storage = cvCreateMemStorage(0);
  CvSeq * contour = 0;
  int mode = CV_RETR_EXTERNAL;
 
  if( argc == 3)
      if(strcmp(argv[2], "all") == 0)
	mode = CV_RETR_CCOMP; //内外轮廓都检测
 
 
  //创建窗口
  cvNamedWindow("src", 1);
  cvNamedWindow("contour",1);
  cvNamedWindow("threshold",1);
 
 
  //载入图像,强制转化为Gray
  if( argc >= 2 && 
      (pImg = cvLoadImage( argv[1], 0)) != 0 )
    {
 
      cvShowImage( "src", pImg );
 
      //为轮廓显示图像申请空间
      //3通道图像,以便用彩色显示
      pContourImg = cvCreateImage(cvGetSize(pImg),
					  IPL_DEPTH_8U,
					  3);
      //copy source image and convert it to BGR image
      cvCvtColor(pImg, pContourImg, CV_GRAY2BGR);
//----阈值分割-------------------------------------------
	  cvThreshold( pImg, pImg, 150, 255, CV_THRESH_BINARY );
	  cvShowImage( "threshold", pImg );
//-----------------------------------------------
//查找contour----------------输入必须是二值图像
      cvFindContours( pImg, storage, &contour, sizeof(CvContour), 
		  mode, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
 
    }
  else
    {
      //销毁窗口
      cvDestroyWindow( "src" );
      cvDestroyWindow( "contour" );
      cvReleaseMemStorage(&storage);
 
      return -1;
    }
 
 
 
 
  //将轮廓画出    
  cvDrawContours(pContourImg, contour, 
		 CV_RGB(0,0,255), CV_RGB(255, 0, 0), 
		 2, 2, 8, cvPoint(0,0));
  //显示图像
  cvShowImage( "contour", pContourImg );
 
  cvWaitKey(0);
 
 
  //销毁窗口
  cvDestroyWindow( "src" );
  cvDestroyWindow( "contour" );
  //释放图像
  cvReleaseImage( &pImg ); 
  cvReleaseImage( &pContourImg ); 
 
  cvReleaseMemStorage(&storage);
 
  return 0;
}


源图像:

 

二值化以后:

轮廓:

分享到:
评论

相关推荐

    opencv 轮廓检测

    OpenCV(开源计算机视觉库)是一个强大的图像处理和计算机视觉工具包,被广泛应用于各种领域,包括轮廓检测。在这个项目中,我们将在VC6.0环境下利用OpenCV来实现轮廓的检测。首先,我们需要理解轮廓检测的基本原理...

    QT+opencv边缘检测,轮廓提取及轮廓跟踪

    在本文中,我们将深入探讨如何在QT5.8环境下结合OpenCV3.2库实现图像处理中的关键步骤:边缘检测、轮廓提取以及轮廓跟踪。这些技术在计算机视觉、机器学习和自动化领域中扮演着重要角色。 首先,让我们来了解边缘...

    python+opencv轮廓检测代码解析

    本篇文章将深入解析如何使用Python结合OpenCV库来实现轮廓检测。 首先,OpenCV是一个强大的开源计算机视觉库,提供了多种图像处理和计算机视觉功能。在进行轮廓检测前,我们需要了解基本的图像处理步骤,包括图片的...

    轮廓检测——OpenCV例子学习

    #### 二、OpenCV轮廓检测简介 OpenCV中的轮廓检测主要包括两个步骤:边缘检测和轮廓提取。 ##### 1. 边缘检测 边缘检测是轮廓检测的第一步,其目的是找到图像中像素值发生显著变化的位置。OpenCV提供了多种边缘检测...

    基于OpenCV的车辆轮廓检测

    ### 基于OpenCV的车辆轮廓检测 #### 摘要 本文介绍了一种新型的基于开源计算机视觉库OpenCV的车辆轮廓检测方法。针对传统汽车尺寸参数测量手段相对落后的现状,本文提出了一种结合图像处理技术和计算机视觉算法的...

    Opencv中查找轮廓,并用直线拟合,检测每个轮廓的线性程度

    代码中利用canny边缘检测绘制并取得工程目录图片下的轮廓,对每个轮廓用直线进行拟合,计算每个轮廓中点到拟合直线的距离。以此来判断一个轮廓的线性程度。包括了霍夫变换检测图像中的直线和累计概率霍夫变换检测...

    Java+opencv3.2.0实现轮廓检测

    Java+OpenCV3.2.0实现轮廓检测 Java是当前最流行的编程语言之一,而OpenCV则是目前最流行的计算机视觉库。 OpenCV提供了许多有用的函数来处理图像和视频,例如图像过滤、图像识别、目标检测等。轮廓检测是图像处理...

    opencv轮廓(contour)检测

    本篇文章将深入探讨OpenCV中的轮廓检测,以及如何使用`cvFindContours`函数进行实践操作。 轮廓是图像中边界或边缘的表示,它们对于对象识别、分割和形状分析至关重要。OpenCV库提供了一套完整的函数来检测和处理...

    opencv 轮廓的提取多种方法

    5. **轮廓检测** OpenCV的`cv2.findContours()`函数是专门用于轮廓提取的,它可以从二值图像中直接找出所有轮廓。这个函数返回一个包含多个轮廓的列表,每个轮廓都是一个顶点序列。配合`cv2.drawContours()`,可以...

    OpenCV实现人脸识别与轮廓检测

    OpenCV(开源计算机视觉库)是一个强大的图像处理和计算机视觉工具,被广泛应用于人脸识别和轮廓检测等任务。本文将深入探讨如何使用OpenCV在实际项目中实现这些功能,并结合Canny算子进行边缘检测。 首先,人脸...

    rum.rar_OpenCV 车辆_OpenCV交通检测_opencv车辆检测_opencv车辆轮廓_车辆轮廓检测

    在opencv中实现车辆检测,提取交通流中机动车辆轮廓

    Opencv_LingJian.rar_OpenCV零件检测_opencv 零件检测_轮廓检测_零件 检测

    接着,轮廓检测是识别图像中特定形状的重要手段。在OpenCV中,`findContours`函数被用来找到二值图像中的轮廓。这个函数返回一个包含所有轮廓的列表,这些轮廓可以被进一步分析,例如通过计算面积、周长或者形状特征...

    OpenCV轮廓提取的源代码

    在计算机视觉领域,轮廓检测是图像处理中的一项重要技术。它可以帮助我们从复杂的图像背景中分离出目标物体,从而便于进一步分析与识别。OpenCV(开源计算机视觉库)提供了强大的工具集来实现这一功能。本文将详细...

    OpenCV笔记: 查找轮廓

    这篇“OpenCV笔记:查找轮廓”可能是关于如何在OpenCV中提取图像中的轮廓,这对于物体识别、形状检测等任务至关重要。 在OpenCV中,查找轮廓涉及以下几个关键步骤: 1. **读取图像**:首先,我们需要使用`imread`...

    OpenCvSharp 轮廓检测.rar

    在本示例"OpenCvSharp 轮廓检测Demo"中,我们将深入探讨如何利用OpenCvSharp进行图像处理,特别是识别和分析图像中的轮廓。轮廓检测在很多应用场景中都至关重要,如物体识别、形状分析、图像分割等。 首先,让我们...

    OPENCV实现的轮廓检测与处理

    OPENCV实现的轮廓检测与处理

    Python Opencv实现图像轮廓识别功能

    轮廓检测 Opencv-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。 import cv2 img = cv2.imread('cloud.jpg') # 灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化 ret, binary = cv...

Global site tag (gtag.js) - Google Analytics