【OpenCV学习】图像轮廓的提取和绘制

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ #include "highgui.h" #include "cv.h" #include #include using namespace std; int main(void) ...

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

#include "highgui.h"
#include "cv.h"
#include <iostream>
#include <iomanip>

using namespace std;

int main(void)
{
    int i=0;
    int mode = CV_RETR_CCOMP;//设置提取轮廓模式
    int contours_num=0;//提取轮廓的数目
    CvScalar external_color;//绘制轮廓线的颜色
    CvScalar hole_color;
    CvMemStorage *storage = cvCreateMemStorage(0);
    CvSeq *contours =0;//存储提取的轮廓图像

    IplImage *pImg = NULL;
    IplImage *pContourImg = NULL;//显示提取的轮廓图像
    IplImage *src=/blog.armyourlife.info/cvLoadImage("1.png",1);

    pImg = cvCreateImage(cvGetSize(src),src->depth,1);
    pContourImg =cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,3);
    cvCvtColor(src,pImg,CV_BGR2GRAY);//将读取的图像转化为灰度图像
    cvNamedWindow("src",1);
    cvNamedWindow("contour",1);
    cvShowImage("src",src);//显示原图
    cvThreshold(pImg,pImg,200,255,CV_THRESH_BINARY);//二值化
    mode = CV_RETR_LIST;
    contours_num=cvFindContours(pImg,storage,&contours,sizeof(CvContour),mode,CV_CHAIN_APPROX_NONE);
    cout<<contours_num<<" "<<endl;//打印找到的轮廓的数目
    for (;contours!=0;contours=contours->h_next)
    {
        hole_color=CV_RGB(rand()&255,rand()&255,rand()&255);
        external_color = CV_RGB(rand()&255,rand()&255,rand()&255);
        cvDrawContours(pContourImg,contours,external_color,hole_color,1,2,8);
    }

    cvShowImage("contour",pContourImg);
    cvWaitKey(0);
    cvReleaseImage(&src);
    cvReleaseImage(&pImg);
    cvReleaseImage(&pContourImg);
    cvReleaseMemStorage(&storage);
}


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
2月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
477 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
3月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
52 4
|
3月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
4月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
4月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
120 1
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
OpenCV与AI深度学习之常用AI名词解释学习
AGI:Artificial General Intelligence (通用人工智能):是指具备与人类同等或超越人类的智能,能够表现出正常人类所具有的所有智能行为。又被称为强人工智能。
137 2
|
6月前
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
206 1
|
5月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
5月前
|
计算机视觉 Python
opencv 处理图像去噪的几种方法学习
OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例: 均值滤波:使用像素邻域的灰度均值代替该像素的值。
70 0
|
6月前
|
运维 算法 计算机视觉
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
83 1