使用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(开源计算机视觉库)是一个强大的图像处理和计算机视觉工具包,被广泛应用于各种领域,包括轮廓检测。在这个项目中,我们将在VC6.0环境下利用OpenCV来实现轮廓的检测。首先,我们需要理解轮廓检测的基本原理...
在本文中,我们将深入探讨如何在QT5.8环境下结合OpenCV3.2库实现图像处理中的关键步骤:边缘检测、轮廓提取以及轮廓跟踪。这些技术在计算机视觉、机器学习和自动化领域中扮演着重要角色。 首先,让我们来了解边缘...
本篇文章将深入解析如何使用Python结合OpenCV库来实现轮廓检测。 首先,OpenCV是一个强大的开源计算机视觉库,提供了多种图像处理和计算机视觉功能。在进行轮廓检测前,我们需要了解基本的图像处理步骤,包括图片的...
#### 二、OpenCV轮廓检测简介 OpenCV中的轮廓检测主要包括两个步骤:边缘检测和轮廓提取。 ##### 1. 边缘检测 边缘检测是轮廓检测的第一步,其目的是找到图像中像素值发生显著变化的位置。OpenCV提供了多种边缘检测...
### 基于OpenCV的车辆轮廓检测 #### 摘要 本文介绍了一种新型的基于开源计算机视觉库OpenCV的车辆轮廓检测方法。针对传统汽车尺寸参数测量手段相对落后的现状,本文提出了一种结合图像处理技术和计算机视觉算法的...
代码中利用canny边缘检测绘制并取得工程目录图片下的轮廓,对每个轮廓用直线进行拟合,计算每个轮廓中点到拟合直线的距离。以此来判断一个轮廓的线性程度。包括了霍夫变换检测图像中的直线和累计概率霍夫变换检测...
Java+OpenCV3.2.0实现轮廓检测 Java是当前最流行的编程语言之一,而OpenCV则是目前最流行的计算机视觉库。 OpenCV提供了许多有用的函数来处理图像和视频,例如图像过滤、图像识别、目标检测等。轮廓检测是图像处理...
本篇文章将深入探讨OpenCV中的轮廓检测,以及如何使用`cvFindContours`函数进行实践操作。 轮廓是图像中边界或边缘的表示,它们对于对象识别、分割和形状分析至关重要。OpenCV库提供了一套完整的函数来检测和处理...
5. **轮廓检测** OpenCV的`cv2.findContours()`函数是专门用于轮廓提取的,它可以从二值图像中直接找出所有轮廓。这个函数返回一个包含多个轮廓的列表,每个轮廓都是一个顶点序列。配合`cv2.drawContours()`,可以...
OpenCV(开源计算机视觉库)是一个强大的图像处理和计算机视觉工具,被广泛应用于人脸识别和轮廓检测等任务。本文将深入探讨如何使用OpenCV在实际项目中实现这些功能,并结合Canny算子进行边缘检测。 首先,人脸...
在opencv中实现车辆检测,提取交通流中机动车辆轮廓
接着,轮廓检测是识别图像中特定形状的重要手段。在OpenCV中,`findContours`函数被用来找到二值图像中的轮廓。这个函数返回一个包含所有轮廓的列表,这些轮廓可以被进一步分析,例如通过计算面积、周长或者形状特征...
在计算机视觉领域,轮廓检测是图像处理中的一项重要技术。它可以帮助我们从复杂的图像背景中分离出目标物体,从而便于进一步分析与识别。OpenCV(开源计算机视觉库)提供了强大的工具集来实现这一功能。本文将详细...
这篇“OpenCV笔记:查找轮廓”可能是关于如何在OpenCV中提取图像中的轮廓,这对于物体识别、形状检测等任务至关重要。 在OpenCV中,查找轮廓涉及以下几个关键步骤: 1. **读取图像**:首先,我们需要使用`imread`...
在本示例"OpenCvSharp 轮廓检测Demo"中,我们将深入探讨如何利用OpenCvSharp进行图像处理,特别是识别和分析图像中的轮廓。轮廓检测在很多应用场景中都至关重要,如物体识别、形状分析、图像分割等。 首先,让我们...
OPENCV实现的轮廓检测与处理
轮廓检测 Opencv-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。 import cv2 img = cv2.imread('cloud.jpg') # 灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化 ret, binary = cv...