如何使用OpenCV Python在图像中检测矩形和正方形?

如何使用OpenCV Python在图像中检测矩形和正方形?

简介

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,支持多种编程语言,包括PythonC++等。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来检测矩形和正方形了。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Python OpenCV