opencv轮廓周长原理_OpenCV3 - 轮廓特征
矩(Moments)
图像矩可以帮助你计算一些特征, 例如对象的质心, 对象的面积等等. 具体可参考Image Moments
函数**cv.moments()** 返回一个所有矩值的字典
import numpy as np
import cv2 as cv
img = cv.imread('star.jpg',0)
ret,thresh = cv.threshold(img,127,255,0)
im2,contours,hierarchy = cv.findContours(thresh, 1, 2)
cnt = contours[0]
M = cv.moments(cnt)
print( M )
通过这些矩值, 你可以计算出有用的数据, 例如面积, 质心等等. 质心可以通过关系(Cx=M10/M00 and Cy=M01/M00)来获得. 通过如下计算获得
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
轮廓面积
轮廓面积可以通过函数**cv.contourArea()**获得, 或者通过M['m00']
area = cv.contourArea(cnt)
轮廓周长
轮廓周长可以使用**cv.arcLength()** 获得. 第二个参数指定图形是否闭环(如果是则为True), 否则只是一条曲线.
perimeter = cv.arcLength(cnt,True)
轮廓逼近
它逼近一个轮廓形状到另一个顶点数目较少的形状, 这取决于我们指定的精度. 它是Douglas-Peucker algorithm算法的一种实现.
第一个参数是轮廓
第二个参数称为ε, 它是从轮廓到近似轮廓的最大距离. 这是一个准确的参数。为了得到正确的输出, 需要明智地选择ε。
epsilon = 0.1*cv.arcLength(cnt,True)
approx = cv.approxPolyDP(cnt,epsilon,True)
如下的第二张图是ε设定为10%的结果, 第三张图是ε设定为1%的结果.
边框
直边界矩形
x,y,w,h = cv.boundingRect(cnt)
cv.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
旋转矩形
rect = cv.minAreaRect(cnt)
box = cv.boxPoints(rect)
box = np.int0(box)
cv.drawContours(img,[box],0,(0,0,255),2)
绿框是直边界矩形, 红框是旋转矩形
参考文件
opencv轮廓周长原理_OpenCV3 - 轮廓特征相关推荐
- opencv 图像轮廓特征 图像面积,轮廓周长,外接矩形、最小外接矩形、最小外接圆、拟合椭圆
找出图像轮廓 contours, hierarchy = cv.findContours(thresh, 3, 2) 画出图像轮廓 cnt = contours[1] cv.drawContours( ...
- Python,OpenCV轮廓属性、轮廓检测及绘制
Python,OpenCV轮廓属性.轮廓检测及绘制 1. 效果图 2. 源码 2.1 轮廓属性 2.2 轮廓特征 参考 这篇博客将介绍OpenCV中的轮廓,轮廓的特征及属性(质心,面积,轮廓,近似轮廓 ...
- OpenCV-Python实战(11)——OpenCV轮廓检测相关应用
OpenCV-Python实战(11)--OpenCV轮廓检测相关应用 0. 前言 1. 轮廓绘制 2. 轮廓筛选 3. 轮廓识别 4. 轮廓匹配 小结 系列链接 0. 前言 在计算机视觉领域,轮廓通 ...
- OpenCV-Python实战(10)——详解 OpenCV 轮廓检测
OpenCV-Python实战(10)--详解 OpenCV 轮廓检测 0. 前言 1. 轮廓介绍 2. 轮廓检测 3. 轮廓压缩 4. 图像矩 4. 1 一些基于矩的对象特征 4.2 Hu 不变矩 ...
- 学习OpenCV双目测距原理及常见问题解答
转自博客:https://blog.csdn.net/angle_cal/article/details/50800775 一. 整体思路和问题转化. 图1. 双摄像头模型俯视图 图1解释了双摄 ...
- 图像处理21-计算轮廓周长或曲线长度
double cv::arcLength(InputArray curve, bool closed ) 计算轮廓周长或曲线长度. 该函数计算曲线长度或闭合轮廓周长 curve:二维点的输入向量,存储 ...
- opencv轮廓及点在轮廓内判断
查找轮廓 轮廓到底是什么?一个轮廓一般对应一系列的点,也就是图像中的一条曲线.表示的方法可能根据不同情况而有所不同.有多重方法可以表示曲线.在openCV中一般用序列来存储轮廓信息.序列中的每一个元素 ...
- python opencv轮廓检测_OpenCV 轮廓检测的实现方法
轮廓概述 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓在形状分析和物体的检测和识别中很有用. 为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化处理或 ...
- OpenCV图像处理---模糊原理
模糊原理 Smooth/Blur(平滑和模糊) 是图像处理中最简单和常用的操作之一 使用该操作的原因之一就是为了给图像预处理时候降低噪声 , 把噪声与周围的数值平均一下就可以平滑噪声. 使用Smoot ...
最新文章
- NMSE考试常见问题
- python的format输出报文_python构造IP报文实例
- 宝塔控制面板创建ftp后链接不上的解决方法
- swift的基础语法(二)
- MySQL分库分表 mycat
- MySQL 纯insert_MySQL使用INSERT插入多条记录
- 增量同步_使用Kettle工具进行增量数据同步
- 1.GD32F103配置环境,搭建工程
- Gridview光棒效果
- 令人期待的php7.4,PHP7.4新特性
- 解决超星网课问题之不能查询后台观看数据和不能观看超时被锁的课程
- excel转word后表格超出页面_excel转word后表格显示不全
- 【图像分割】基于收缩系数的粒子群混合引力搜索算法多级图像阈值分割算法研究附matlab代码
- 计算机 基础知识练习题
- docker docker compose 云效流水线
- 职业规划以兴趣为导向,而不是盲目跟风
- Asp网站脚本漏洞的安全防范
- 数据库事务开启,提交与回滚
- Bold-fMRI(血氧水平依赖功能磁共振成像)原理
- 2015年我国软件产业市场现状分析