OpenCV自学笔记4:轮廓检测
来源:互联网 发布:python php 比较 编辑:程序博客网 时间:2024/05/16 06:12
轮廓检测
引言
在计算机视觉中,轮廓检测是一个十分重要的任务。与边缘不同,图像中的轮廓包含更多的实际意义。OpenCV提供了 findContours() 函数和 drawContours() 函数实现轮廓的检测和绘制
————————————————————
OpenCV轮廓检测的例子
# -*- coding:utf-8 -*-import cv2# Step1. 读入图像image = cv2.imread('images/leaf.png', 0)# Step2. 二值化ret, thresh = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)# Step3. 轮廓提取image, contour, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# Step4. 轮廓绘制color = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)dst = cv2.drawContours(color, contour, -1, (0,255,0), 2)cv2.imshow("dst", dst)cv2.waitKey(0)
关于findContours()和drawContours()的参数介绍,请移步这篇博文。
程序的运行结果如下:
————————————————————
边界框、最小矩形区域、最小闭圆
# -*- coding:utf-8 -*-import cv2import numpy as np# Step1. 读入图像image = cv2.imread('images/shape.jpg', 0)# Step2. 二值化ret, thresh = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)# Step3. 轮廓提取image, contour, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# Step4. 绘制边界框color = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)for c in contour: # 绘制边界框 x,y,w,h = cv2.boundingRect(c)# 将轮廓信息转化为(x,y)坐标,并返回宽和高 # rectangle有四个参数:要绘制的图像,左上角坐标,右下角坐标,颜色,轮廓宽度(这里为2) cv2.rectangle(color, (x, y), (x + w, y + h), (0, 255, 0), 2) # 绘制最小矩形区域 rect = cv2.minAreaRect(c) box = cv2.boxPoints(rect) # 获得矩形四个角的坐标, 返回浮点型 box = np.int0(box) # 把浮点型转化为整型 cv2.drawContours(color, [box], 0, (0, 255, 0), 3) # 绘制最小闭圆 (x, y), radius = cv2.minEnclosingCircle(c) center = (int(x), int(y)) radius = int(radius) cv2.circle(color, center, radius, (0, 255, 0), 1) # 绘制最小外包三角形 retval, points = cv2.minEnclosingTriangle(c) for i in range(0, 3): # 这里使用了一个小技巧, 从i 绘制到 (i + 1) % 3 cv2.line(color, tuple(points[i][0]), tuple(points[(i + 1) % 3][0]), (0, 255, 0), 2) cv2.imshow("dst", color)cv2.waitKey(0)
程序的运行结果如下:
阅读全文
0 0
- OpenCV自学笔记4:轮廓检测
- opencv笔记6----轮廓检测
- OpenCV入门笔记(五) 轮廓检测
- OpenCV学习笔记(一) 轮廓检测
- OpenCV 自学笔记30. 简单轮廓匹配的小例子
- openCV学习笔记(3):opencv轮廓检测应用例子
- OpenCV 轮廓检测
- OpenCV轮廓检测
- OpenCV轮廓检测
- OpenCV轮廓检测
- OpenCV 轮廓检测
- Opencv轮廓检测
- Opencv 轮廓检测 直线
- OpenCV 轮廓检测
- OpenCV 矩形轮廓检测
- OpenCV 闭合轮廓检测
- OpenCV 轮廓检测
- Opencv轮廓查找检测
- BZOJ 2428: [HAOI2006]均分数据 模拟退火
- 【NOI2017模拟6.23】回转寿司
- Vim 使用
- 程序里面的异常
- 60. Permutation Sequence
- OpenCV自学笔记4:轮廓检测
- Oracle 数据库还原代码步骤
- Redis详解(原理,安装,配置,使用,命令)
- pycharm跳转到定义和声明,出现的问题:Cannot find declaration to go to
- Java中EventQueue.invokeLater干什么用的
- APUE习题3.2/3.6
- 警告: A C3P0Registry mbean is already registered. This probably means that an application...
- Servlet
- 第三方集成百度地图定位