如何使用OpenCV Python在图像中检测矩形和正方形?
简介
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,支持多种编程语言,包括Python,C++等。OpenCV可以用于处理图像和视频,包括对象跟踪、面部识别等。本文将介绍如何使用OpenCV Python检测图像中的矩形和正方形。
准备工作
在开始之前,我们需要安装OpenCV库。我们可以使用pip或者anaconda等包管理器来安装OpenCV。在命令行中执行以下命令来安装OpenCV:
pip install opencv-python
安装完毕后,我们就可以开始检测矩形和正方形了。
矩形和正方形检测
在OpenCV中,我们可以使用cv2库的findContours()函数和cv2库的boundingRect()函数来检测图像中的矩形和正方形。findContours()函数用于检测轮廓,boundingRect()函数用于检测矩形边框。
我们先来看一个检测矩形的示例代码:
import cv2
import numpy as np
# 读取图像
img = cv2.imread("sample.png")
# 灰度化处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
ret, thresh = cv2.threshold(gray, 127, 255, 0)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for cnt in contours:
# 获取矩形边框坐标
x, y, w, h = cv2.boundingRect(cnt)
# 绘制矩形
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 显示图像
cv2.imshow("rect", img)
cv2.waitKey(0)
运行上述代码,我们可以在图像中看到检测到的矩形边框。
接下来,我们来看一个检测正方形的示例代码:
import cv2
import numpy as np
# 读取图像
img = cv2.imread("sample.png")
# 灰度化处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
ret, thresh = cv2.threshold(gray, 127, 255, 0)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for cnt in contours:
# 获取矩形边框坐标
x, y, w, h = cv2.boundingRect(cnt)
# 判断是否为正方形
if w == h:
# 绘制正方形
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 显示图像
cv2.imshow("square", img)
cv2.waitKey(0)
运行上述代码,我们可以在图像中看到检测到的正方形边框。
总结
本文介绍了如何使用OpenCV Python检测图像中的矩形和正方形。我们使用了cv2库的findContours()函数和cv2库的boundingRect()函数来检测轮廓和边框。通过本文的学习,你已经可以使用OpenCV Python来检测矩形和正方形了。