1. 使用Python、OpenCV计算轮廓的中心并标记
2. 使用Python、OpenCV检测轮廓的形状并标记
3. 使用颜色通道统计信息来标记形状的实际颜色并标记

本博客的目标:(1)检测图像中每个形状的轮廓,然后(2)计算轮廓的中心-也称为质心。

  1. 计算轮廓/形状区域的中心;
  2. 仅使用轮廓属性识别出各种形状,例如圆形,正方形,矩形,三角形和五边形;
  3. 标记形状的颜色;

效果图:

1. 图像预处理部分

考虑到图像是人为绘制或者剪切的,圆形不够圆,方形不够方,矩形也不是完全矩形;首先进行轮廓提取;
(1)转换为灰度图;
(2)高斯模糊处理以减少高频噪声,从而使轮廓检测过程更加精确;
(3)图像的二值化,通常会使用边缘检测和阈值化,这里用阈值化方法;通过调整适当的参数,把图像由背景黑色前景彩色调整成为背景黑色前景轮廓区域为白色。

2. 轮廓检测

检测轮廓后,计算轮廓区域的图像矩;获取轮廓的中心;并绘制在图像上;

在计算机视觉和图像处理中,图像矩 通常用于表征图像中对象的形状。这些力矩捕获了形状的基本统计特性,包括对象的面积,质心(即对象的中心(x,y)坐标),方向以及其他所需的特性。对于处理分隔后的图像尤其有用;

# python center_of_shape.py --image shapes_and_colors.png# 导入必要的包
import argparse
import imutils
import cv2# 构建命令行参数
# --image 要处理的图像路径
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,help="path to the input image")
args = vars(ap.parse_args())# 加载图像,转换为灰度,使用5 x 5内核进行高斯平滑处理,阈值化
image = cv2.imread(args["image"])
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
thresh = cv2.threshold(blurred, 60, 255, cv2.THRESH_BINARY)[1]# 注意,在应用阈值化之后,形状是如何在黑色背景上表示为白色前景。
# 下一步是使用轮廓检测​​找到这些白色区域的位置:
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)# 遍历轮廓集
for c in cnts:# 计算轮廓区域的图像矩。 在计算机视觉和图像处理中,图像矩通常用于表征图像中对象的形状。这些力矩捕获了形状的基本统计特性,包括对象的面积,质心(即,对象的中心(x,y)坐标),方向以及其他所需的特性。M = cv2.moments(c)cX = int(M["m10"] / M["m00"])cY = int(M["m01"] / M["m00"])# 在图像上绘制轮廓及中心cv2.drawContours(image, [c], -1, (0, 255, 0), 2)cv2.circle(image, (cX, cY), 7, (255, 255, 255), -1)cv2.putText(image, "center", (cX - 20, cY - 20),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)# 展示图像cv2.imshow("Image", image)cv2.waitKey(0)

参考:

  • https://www.pyimagesearch.com/2016/02/01/opencv-center-of-contour/

使用Python、OpenCV计算轮廓的中心相关推荐

  1. 如何利用OpenCV寻找轮廓的中心?

    简 介: 本文介绍了利用OpenCV和Python编程来计算形状轮廓的中心点.当然后面还会继续给出如何通过轮廓来分辨物体形状种类,以及对于各自的颜色进行标准. 关键词: OpenCV,contours ...

  2. OpenCV——计算轮廓长度/周长和面积

    轮廓面积 轮廓面积是指每个轮廓中所有的像素点围成区域的面积,单位为像素. double contourArea( InputArray contour, bool oriented = false ) ...

  3. python+opencv 计算图片的感知hash值,来计算汉明距离,简单的找相似图片

    感知哈希算法是一类算法的总称,包括aHash.pHash.dHash.顾名思义,感知哈希不是以严格的方式计算Hash值,而是以更加相对的方式计算哈希值,因为"相似"与否,就是一种相 ...

  4. Python,OpenCV应用轮廓逼近算法,检测对象的形状

    上一篇博客,我们学习了如何利用Python.OpenCV计算轮廓的中心,这一节学习仅运用轮廓的基本属性来检测其形状,三角形,正方形,矩形,五边形,圆. (1)利用轮廓逼近,将曲线上的点数减少为更简单的 ...

  5. python图片相似度计算_python Opencv计算图像相似度过程解析

    这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.相关概念 一般我们人区分谁是谁 ...

  6. python open-cv 基础知识总结(三)

    上一章:python open-cv 基础知识总结(二) 1. 轮廓中心计算 本教程的目标是 (1)  检测图像中每个形状的轮廓, (2)  计算轮廓的中心 -也称为区域的  质心 . 为了实现这些目 ...

  7. 计算轮廓的特征参数(周长、面积、圆形度、周径比等)

    使用C++.opencv计算轮廓的周长.面积.圆形度.周径比等特征参数 图像的特征参数用于图像的模式识别(图像识别),获取越多种类的特征参数,可从中选择合适的进行组合,进而更好地区分各个物体. 之前介 ...

  8. 使用Python和OpenCV对轮廓进行排序(从左到右,自上而下)

    使用Python和OpenCV对轮廓进行排序(从左到右,自上而下) 1. 效果图 2. 原理 3. 源码 参考 使用轮廓来构建移动文档扫描仪. 使用轮廓来检测图像中的条形码. 利用轮廓来找到从相机到物 ...

  9. python opencv轮廓提取_Python + Opencv2 实现轮廓提取,轮廓区域面积计算

    对图像处理时,会遇到这样一个场景:找到图像主体轮廓,这是其一,可能为了凸显轮廓,需要用指定的颜色进行标记:轮廓标记完可能任务还没有结束,还需对轮廓所勾勒的像素面积区域统计计算. 本篇文章的主要内容就是 ...

最新文章

  1. OSChina 周二乱弹 ——clouddyy快来! 这个姑娘好萌你要不?
  2. Python的sort()
  3. java 多线程日志_多线程 打印的日志出现重复行
  4. css中相对定位和绝对定位
  5. Elasticsearch合并高亮字段
  6. mac中sublime运行html,Mac系统下Sublime Text直接运行JavaScript调试控制台
  7. 深度学习入门实例——基于keras的mnist手写数字识别
  8. nero10 序列号
  9. 原生js预览ofd文件
  10. VMware 找不到我的计算机
  11. 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第五章
  12. HTML和CSS实现京东登录页面(html,css代码详解)
  13. https://blog.csdn.net/myy629464/article/details/77938431/
  14. 双十一数码产品选什么好?双十一数码好物推荐
  15. SSTI 模板注入url_for和get_flashed_messages之[WesternCTF2018]shrine
  16. 西北工业大学遭到境外网络攻击,调查报告二发布
  17. 短信导出工具V1.3
  18. 2021-3-31 git提交代码的命令及流程
  19. MySQL数据库文件转化为Word表格做论文/报告
  20. 非阻塞赋值与阻塞赋值

热门文章

  1. Geo-CNN的三维点云
  2. 端口号被占用怎么解决
  3. 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横
  4. 【模拟】不高兴的津津
  5. 御水.20180506
  6. 2022-2028年中国SUV市场投资分析及前景预测报告
  7. 利用Spring AOP与JAVA注解为系统增加日志功能
  8. usaco Raucous Rockers(dp)
  9. American Heritage
  10. spfa(还不懂--)