OpenCV提取图像轮廓总结

OpenCV函数 cvFindContours提取轮廓

点击打开链接  点击打开链接 点击打开链接 点击打开链接

提取元素的轮廓及形状描述子

点击打开链接

提取轮廓的点坐标

轮廓提取后,它是用关键点组成的,下面提取出这些关键点。

1.先输出所有关键点的个数cout<<"elements"<<contour->total<<endl;

2.for(int i=0;i<contour->total;++i)

{

CvPoint* p = CV_GET_SEQ_ELEM(CvPoint,contour,i);

cout<<p->x<<","<<p-y<<endl;

}

求轮廓的面积和周长

点击打开链接

for(contour;contour!=NULL;contour=contour->h_next)

{

double s=cvContourArea(contour,CV_WHOLE_SEQ);

double l=cvArcLength(contour,CV_WHOLE_SEQ,-1);//后面参数0表示轮廓不闭合,正数表示闭合;负数表示计算序列组成的面积;提取的角点以list形式时,用负数。

cout<<"面积s:"<<s<<‘    ‘<<"周长L:"<<L<<endl;

}

OpenCV提取图像轮廓总结

时间: 2024-11-04 23:01:48

OpenCV提取图像轮廓总结的相关文章

matlab 提取图像轮廓(图像边缘提取)

利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下: close all;clear all;clc; % 提取图像轮廓,提取图像边缘 I = imread('yifu.jpg'); c = im2bw(I,graythresh(I)); figure; subplot(131);imshow(I); c = flipud(c); %实现矩阵c上下翻转 b = edge(c,'canny'); [u,v] = find(b); %返回边界矩阵b中非零元

OpenCV函数cvFindContous提取图像轮廓

Opencv中提供了很多关于图像轮廓处理的函数,这里我用cvFindContours函数来提取轮廓,并用cvDrawContours函数将提取的轮廓画出来.函数cvFindContours的第一个参数就是我们要进行提取轮廓的目标图像,这里要注意,这个图像必须是一个二值图.得到二值图的方法有很多,这里我采用的是cvThreshold函数,通过设置阀值来得到相应的二值图.当然,这里阀值的选择根据不同的图像可以自己适当的调整,这样效果就比较好了!下面是源码: #include<cv.h> #incl

opencv 5 图像轮廓与图像分割修复 2 使用多边形将轮廓包围

使用多边形将轮廓包围 返回外部矩阵边界(boundingRect()函数) 寻找最小包围矩形(minAreaRect()函数) 寻找最小包围圆形(minEnclosingCircle函数) 用椭圆拟合二维点集(fitEllipse()函数) 逼近多边形曲线(approxPolyDP()函数) 基础示例:创建包围轮廓的矩形边界 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp

opencv:图像轮廓发现

#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; RNG rng(12345); int main(int argc, char** argv) { // Mat src = imread("f:/images/qq/20200215213837.png"); Mat src = imread("f:/images/qq/

OpenCV与EmguCV中的图像轮廓提取

轮廓是图像中表示边界的一系列点的集合. 虽然边缘检测算法可以根据像素间的差异检查出轮廓边界的像素,但是它并没有把轮廓做为一个整体表示出来.所以下一步工作是把这些边缘检测出来的像素组装成轮廓. openCV中可以用findContours()函数来从二值图像中提取轮廓. openCV中一般用序列来存储轮廓信息.序列中的每一个元素是曲线中一个点的位置. 函数findContours()从二值图像中寻找轮廓.findContours()处理的图像可以是Canny()后得到的有边缘像素的的图像,也可以是

OPENCV图像轮廓检测

前面在图像转换的时候学到canny算子,可以检测出图像的轮廓信息,但是,该算子检测到的轮廓信息还需要我们手动的用眼睛去识别,而实际工程应用中,我们需要得到轮廓的具体数学信息,这就涉及到今天的主题,图像轮廓检测. 一.图像轮廓检测 在opencv中,轮廓对应着一系列的点的集合,opencv提供了一个函数,用来获得这些点的集合 API:void finContours(输入图像,输出轮廓点集,输出向量,int 轮廓检索模式,int 轮廓近似方法,Point 轮廓点的可选偏移量) 注:1.输入图像,是

python-opencv在有噪音的情况下提取图像的轮廓

对于一般的图像提取轮廓,这篇博文介绍了一个很好的方法,但是对于有噪声的图像,并不能很好地捕获到目标物体. 比如对于我的鼠标,提取的轮廓效果并不好,因为噪声很多: 所以本文增加了去掉噪声的部分. 首先加载原始图像,并显示图像 1 img = cv2.imread("temp.jpg") #载入图像 2 h, w = img.shape[:2] #获取图像的高和宽 3 cv2.imshow("Origin", img) #显示原始图像 然后进行低通滤波处理,进行降噪 1

【OpenCV函数】轮廓提取;轮廓绘制;轮廓面积;外接矩形

FindContours 在二值图像中寻找轮廓 int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size=sizeof(CvContour), int mode=CV_RETR_LIST, int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) ); image  输入的 8-比特.单通道图像.

opencv cv.findContours 函数详解 图像轮廓层级 图像轮廓检索方式详解

函数 cv.findContours contours, hierarchy = cv.findContours( image, mode, method[, contours[, hierarchy[, offset]]] ) 参数1:源图像 参数2:轮廓的检索方式,这篇文章主要讲解这个参数 参数3:一般用 cv.CHAIN_APPROX_SIMPLE,就表示用尽可能少的像素点表示轮廓 contours:图像轮廓坐标,是一个链表 hierarchy:[Next, Previous, First