返回顶部
首页 > 资讯 > 后端开发 > Python >Python opencv进行矩形识别
  • 416
分享到

Python opencv进行矩形识别

opencvpython计算机视觉矩形识别圆形识别 2023-09-03 10:09:30 416人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python OpenCV进行矩形识别 图像识别中,圆形和矩形识别是最常用的两种,上一篇讲解了圆形识别,本例讲解矩形识别,最后的结果是可以识别出圆心,4个顶点,如下图: 左边是原始图像,右边是识别结果

python OpenCV进行矩形识别

图像识别中,圆形和矩形识别是最常用的两种,上一篇讲解了圆形识别,本例讲解矩形识别,最后的结果是可以识别出圆心,4个顶点,如下图:
左边是原始图像,右边是识别结果,在我i5 10400的CPU上,执行时间不到8ms。
在这里插入图片描述
识别出结果后,计算任意3个顶点的彼此距离,共3个数据,其中数值最小值对应的2个顶点是短边,数值最大的2个顶点对应矩形的对角线,中间那个值的矩形的长边。如果是正方形,则最小值和中间值相等。知道了长边的2个点,也就很容易求得矩形的旋转方向,在机器人捡拾物品的过程中,也就知道了末端执行器的旋转角度值。

重要函数讲解

1 高斯模糊

blur = cv2.GaussianBlur(resized, (5, 5), 0)     # 高斯模糊, 窗口为5x5, 标准差为0

高斯模糊,或者叫高斯滤波,其中resized是输入的图像数组,blur是输出的图像数组,(5,5)是一个5*5的卷积核,可大可小,但必须为奇数。这一步是消除图像中的噪声,以免其影响识别结果。

2 图像格式转换

RGB格式

img = cv2.imread(".\\img\\save2.jpg")

图像加载后,默认就是RGB格式。

常见照片的图像格式是RGB或RGBA的,也就是红绿蓝通道,再加上透明度通道。
如果我们要识别的图像中,与颜色有关,如只要识别红色的物体,那我们就用RGB格式进行处理,并提取其中的一个通道。如下图,在红色通道中,红色物体的亮度最高,其他同理。
但是显然,下图中,在红色通道要提取红色并不容易,因为红色通道中红色和背景的颜色差不多,难以将前景与背景分离。而绿色通道和蓝色通道,对红色的识别度更好些。
在这里插入图片描述

HLS格式

lab = cv2.cvtColor(blur, cv2.COLOR_RGB2HLS)     # 转为HLS图像模式, 此模式区分颜色简单, 同时处理速度快

如果与颜色无关,需要识别时,可以考虑采用HLS色彩模式进行。这个色彩模型是由色调,饱和度,亮度3个通道构成,如下:
在这里插入图片描述
可以看出,L通道的轮廓最明显,因此可以使用该通道来做图像识别。

同样对于需要提取的红色物体,可以在识别出矩形之后,取矩形中心点(更好的是中心一小块区域的平均值)的颜色值,再自己判断一下颜色,即可筛选出想要的红色矩形了。

3 通道分离

这其实是对numpy数组的操作

channel_h = lab[:, :, 0]                        # 提取H通道 色相channel_l = lab[:, :, 1]                        # 提取L通道 明度channel_s = lab[:, :, 2]                        # 提取S通道 饱和度

4 二值化

ret_val, bin_channel_l = cv2.threshold(channel_l.copy(), 170, 255, cv2.THRESH_BINARY_INV)   # 复制L通道, 并二值化

第1个参数是复制一次L通道
第2个参数:170 是阈值
第3个参数:255 是填充值
第4个参数是模式,即二值化,还是反二值化,本例是反二值化

5 查找轮廓

    contours = cv2.findContours(bin_channel_l, cv2.RETR_EXTERNAL, cv2.CHaiN_APPROX_NONE)

第1个参数是图像数组
第2个参数是查找模式,当前模式为查找最外面的轮廓,对于轮廓内部的轮廓,则不查找
第3个参数是输出所有轮廓点的信息

查找的轮廓点会有很多组,面积大小也不一,本例中只关心4个顶点的轮廓,也就是矩形。

面积大小可以设一个阈值,小于这个阈值的矩形也不是我们想要的。根据矩形长宽所占用的像素值,乘一下就是该矩形的面积,超过这个阈值的矩形,就是我们想要的。

最后,如果要对颜色进行筛选,则可以从矩形的中心取一个5x5的矩形,对其RGB的值分别进行求和,再除以25(5x5),即是该区域的颜色值。

完整代码

将以下代码复制到IDE中即可,需要事先安装好Python, opencv, numpy等相关运行库

# coding:   UTF-8# 作者:     李佳# Email:    36566686@qq.com# WeChat:   laolidesenlin# Date:    2020/4/1  20:09# Filename:detect_rect.PY# SoftTool:PyCharm__author__ = '李佳'import cv2import timeimport numpy as npdef draw_rect(img, rect_point):

来源地址:https://blog.csdn.net/13011803189/article/details/129184510

--结束END--

本文标题: Python opencv进行矩形识别

本文链接: https://lsjlt.com/news/391970.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python opencv进行矩形识别
    Python opencv进行矩形识别 图像识别中,圆形和矩形识别是最常用的两种,上一篇讲解了圆形识别,本例讲解矩形识别,最后的结果是可以识别出圆心,4个顶点,如下图: 左边是原始图像,右边是识别结果...
    99+
    2023-09-03
    opencv python 计算机视觉 矩形识别 圆形识别
  • Python opencv进行圆形识别(圆检测)
    圆形识别(圆检测)是图像识别中很常见的一种处理方式,最核心的是cv2.HoughCircles这个函数实现的圆形检测。当然还有一些其他的处理过程,以下详述: 1 读入图像 首先需要读取一个图像文件,将...
    99+
    2023-09-02
    opencv python 计算机视觉 圆检测 图像处理
  • Python opencv进行圆形识别(圆检测)实例代码
    目录前言1 读入图像2 图像预处理3 圆形识别4 显示检测结果5 完整代码和示例图像总结前言 圆形识别(圆检测)是图像识别中很常见的一种处理方式,最核心的是cv2.HoughCirc...
    99+
    2023-05-20
    opencv识别圆形 opencv 圆形检测 opencv形状识别
  • python使用opencv进行人脸识别
    环境 ubuntu 12.04 LTS python 2.7.3 opencv 2.3.1-7 安装依赖 sudo apt-get install libopencv-* sudo apt-get in...
    99+
    2022-06-04
    python opencv
  • Python怎么使用opencv进行手势识别
    这篇文章将为大家详细讲解有关Python怎么使用opencv进行手势识别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。原理首先先进行手部的检测,找到之后会做Hand Landmarks。将手掌的21个点找...
    99+
    2023-06-26
  • Python+OpenCV进行人脸面部表情识别
    目录前言一、图片预处理二、数据集划分三、识别笑脸四、Dlib提取人脸特征识别笑脸和非笑脸前言 环境搭建可查看Python人脸识别微笑检测 数据集可在https://inc.ucsd....
    99+
    2024-04-02
  • Python OpenCV识别行人入口进出人数统计
    目录前言一、所需工具软件二、使用步骤前言 这篇博客针对《Python OpenCV识别行人入口进出人数统计》编写代码,功能包括了入口行人识别,人数统计。代码整洁,规则,易读。应用推荐...
    99+
    2023-01-06
    OpenCV人数统计 OpenCV统计人数 OpenCV行人检测
  • Python如何使用opencv进行手势识别详解
    目录前言原理程序部分附另一个手势识别实例总结前言 本项目是使用了谷歌开源的框架mediapipe,里面有非常多的模型提供给我们使用,例如面部检测,身体检测,手部检测等。 原理 首先...
    99+
    2024-04-02
  • C++OpenCV实战之形状识别
    目录前言一、图像预处理二、形状识别三、源码四、结果显示总结前言 本案例通过使用OpenCV中的approxPolyDP进行多边形近似,进而进行基础形状识别(圆、三角形、矩形、星形&h...
    99+
    2024-04-02
  • K210摄像头矩形图坐标识别
    我接触的第一个硬件项目是设计一个简陋的智能视觉小车,我在项目里的任务是识别一张纸上六个目标点坐标然后发送给小车。 图一  场地样式 就是将上图六个点的坐标识别然后传输给小车。 识别效果大概是这样:  图二 识别效果 因为是第一次做这样...
    99+
    2023-08-31
    ide python
  • Python OpenCV中如何进行图形绘制
    这篇文章将为大家详细讲解有关Python OpenCV中如何进行图形绘制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。背景使用OpenCV进行图形绘制是一种必备的技能,在图像的任务...
    99+
    2023-06-22
  • Python OpenCV卡号识别如何识别
    本篇内容主要讲解“Python OpenCV卡号识别如何识别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python OpenCV卡号识别如何识别”吧!学在前面从本篇博客起,我们将实际完成几个...
    99+
    2023-06-09
  • Python 人脸识别 OpenCV (
    ■环境Python 3.6.0Pycharm 2017.1.3 ■库、库的版本OpenCV 3.4.1 (cp36) ■haarcascades下载https://github.com/opencv/opencv/tree/master/d...
    99+
    2023-01-31
    Python OpenCV
  • Python+OpenCV实现在图像上绘制矩形
    话不多说,直接上代码 import copy import cv2 import numpy as np WIN_NAME = 'draw_rect' class Rec...
    99+
    2024-04-02
  • python opencv鼠标画矩形框之cv2.rectangle()函数
    目录cv2.rectangle()函数说明参数说明利用鼠标回调函数交互式画矩形框总结关于鼠标回调函数的说明可以参考:opencv-python的鼠标交互操作 cv2.rectangl...
    99+
    2024-04-02
  • python opencv 画外接矩形框的完整代码
    画外接矩形框,可以画成一个最大的,也可以分别画。 # -*- coding: utf-8 -*- import cv2 image = cv2.imread('G:/1...
    99+
    2024-04-02
  • C++ OpenCV怎么实现形状识别功能
    本篇内容主要讲解“C++ OpenCV怎么实现形状识别功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++ OpenCV怎么实现形状识别功能”吧!一、图像预处理原图如图所...
    99+
    2023-07-02
  • python+opencv 车牌识别实现
    识别思路: 1、通过摄像头采集图片 2、对图片进行去噪、对比度加强处理等操作 3、车牌位置的定位,采集到车牌信息 4、对车牌字母进行分割 5、通过卷积神经网络训练出来的模型,对采集车牌的各个字母进行识别 6、对结果进行组合,最后得到车牌...
    99+
    2023-01-31
    车牌 python opencv
  • Python+OpenCV如何实现在图像上绘制矩形
    小编给大家分享一下Python+OpenCV如何实现在图像上绘制矩形,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!代码import copyimport cv2import numpy&nbs...
    99+
    2023-06-29
  • python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
    目录实现方法1)画线段 cv.line2)画圆形 cv.circle3)画矩形 cv.rectangle4)画椭圆形 cv.ellipse5)添加文本 cv.putText最近学了下...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作