博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV定位轮廓的中点
阅读量:7250 次
发布时间:2019-06-29

本文共 1344 字,大约阅读时间需要 4 分钟。

本文将会用三个不同的示例说明用OpenCV如何进行形状的检测与分析。

从这三个示例中我们将会学到如何:

  1. 计算一个轮廓或图形区域的中心点,这项小技能会在以后很多的OpenCV项目中将会非常实用。
  2. 识别不同的形状,例如圆形,正方形、矩形、三角形、椭圆等。
  3. 标识形状名称
image

图像中包含了太多对于我们这个示例中没有意义信息,我们的目标是要从图中检测每个图形的轮廓线并计算其中心点,为了达到这个效果我们需要先对图像进行一些预处理:

  • 灰度化
  • 对图像进行模糊处理以减少轮廓边缘出现的噪点
  • 二值化图像,通常地边缘检测与读取阀值需要进行此过程
$ pip install imutils
import argparseimport imutilsimport cv2 ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=True,    help="path to the input image")args = vars(ap.parse_args()) # 进行灰度化得到二值图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]

以下是上述代码的输出效果:

image

下一步就是调用OpenCV的findContour方法检测灰度化图片中的轮廓:

cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,    cv2.CHAIN_APPROX_SIMPLE)cnts = cnts[0] if imutils.is_cv2() else cnts[1]

接下来就在每个轮廓上画出一个突出的边缘和标出中心点:

for c in cnts:    # 获取中心点    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)

上述代码中cv2.moments()是用于计算,然后通过图像矩计算质心。以下是代码的显示效果:

image

转载地址:http://swebm.baihongyu.com/

你可能感兴趣的文章
Mysql高级查询 内连接和外连接详解
查看>>
基于AWS的电子商务网站架构——Web前端
查看>>
基于险企传统资源优势的“一核三环”规划——互联网平台建设
查看>>
社交网络:有意义的不仅是邓巴数
查看>>
MySQL优化案例
查看>>
02 贝叶斯算法 - 案例一 - 鸢尾花数据分类
查看>>
场景数据互为表里!畅想2027,保险行业发展愿景
查看>>
hibernate4整合spring3出现java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;...
查看>>
港科大教授权龙:三维视觉重新定义人工智能安防
查看>>
数据库巡检项
查看>>
通过阿里云APP,可以进行ECS,RDS 等实例的管理
查看>>
HBase-Region太多的问题简单总结
查看>>
说说我为什么看好Spring Cloud Alibaba
查看>>
STM32学习笔记(五)——通用定时器计数延时
查看>>
Android selector shape 无效问题
查看>>
Data Lake Analytics: 使用DataWorks来调度DLA任务
查看>>
zabbix配置web监控实现网页监控
查看>>
Postgresql lock锁等待检查
查看>>
codeforces1141D题解(暴力+贪心)
查看>>
Java Spring Boot 2.0实战MyBatis连接池阿里Druid与SQL性能监控
查看>>