openCV python 颜色识别

article/2025/8/26 19:29:51

图像识别

这个代码的功能是根据摄像头输入的图像,识别红色块,绿色块的坐标,并返回红绿色块的中心点的图像坐标(单位为像素)

当然,识别色可以自己更改,如蓝色,白色,黑色

运行平台:

硬件:奥比中光usb摄像头,30FPS

软件:pycharm,opencv库

识别绿色色块代码如下

    

识别绿色

def green_point_video(frame):kernel_2 = np.ones((2, 2), np.uint8)  # 2x2的卷积核kernel_3 = np.ones((3, 3), np.uint8)  # 3x3的卷积核kernel_4 = np.ones((4, 4), np.uint8)  # 4x4的卷积核kernel_8 = np.ones((8, 8), np.uint8)Lower_red = np.array([156, 128, 46])Upper_red = np.array([180, 255, 255])red = [Lower_red, Upper_red, 'red']Lower_white = np.array([0, 0, 200])  # 221Upper_white = np.array([180, 30, 255])white = [Lower_white, Upper_white, 'white']Lower_black = np.array([0, 0, 0])Upper_black = np.array([180, 255, 46])black = [Lower_black, Upper_black, 'black']Lower_green = np.array([35, 95, 46])Upper_green = np.array([70, 255, 255])green = [Lower_green, Upper_green, 'green']Lower_blue = np.array([80, 80, 150])Upper_blue = np.array([110, 255, 255])blue = [Lower_blue, Upper_blue, 'blue']HSV = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)  # 把BGR图像转换为HSV格式color = greenif color[2] == 'green':mask_red = cv2.inRange(HSV, color[0], color[1])erosion = cv2.erode(mask_red, kernel_2, iterations=1)erosion = cv2.erode(erosion, kernel_4, iterations=1)erosion = cv2.erode(erosion, kernel_4, iterations=1)dilation = cv2.dilate(erosion, kernel_2, iterations=1)dilation = cv2.dilate(dilation, kernel_4, iterations=1)dilation = cv2.dilate(dilation, kernel_8, iterations=1)ret, binary = cv2.threshold(dilation, 127, 255, cv2.THRESH_BINARY)  # 二值化,将滤波后的图像变成二值图像放在binary中cnts = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)  # 寻找轮廓green_list = []for c in cnts:# compute the center of the contourM0 = cv2.moments(c)# cv2.drawContours(frame, [c], -1, (0, 255, 0), 2)car_video_location = [int(M0["m10"] / M0["m00"]), int(M0["m01"] / M0["m00"])]cv2.circle(frame, (car_video_location[0], car_video_location[1]), 7, (0, 255, 0), -1)cv2.putText(frame, "green", (car_video_location[0] - 20, car_video_location[1] - 20),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)cv2.imshow("Image", frame)green_point = [int(M0["m10"] / M0["m00"]), int(M0["m01"] / M0["m00"])]green_list = green_list + green_point# if len(green_list) == 6:  # 起始可能识别不到3个红色块,等都识别到,再输出坐标#     print('红色块1', green_list[0], green_list[1])#     print('红色块2', green_list[2], green_list[3])#     print('红色块3', green_list[4], green_list[5])return green_list

识别红色

def red_point_video(frame):kernel_2 = np.ones((2, 2), np.uint8)  # 2x2的卷积核kernel_3 = np.ones((3, 3), np.uint8)  # 3x3的卷积核kernel_4 = np.ones((4, 4), np.uint8)  # 4x4的卷积核kernel_8 = np.ones((8, 8), np.uint8)Lower_red = np.array([156, 128, 46])Upper_red = np.array([180, 255, 255])red = [Lower_red, Upper_red, 'red']HSV = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)  # 把BGR图像转换为HSV格式color = redmask_red = cv2.inRange(HSV, color[0], color[1])erosion = cv2.erode(mask_red, kernel_2, iterations=1)erosion = cv2.erode(erosion, kernel_4, iterations=1)erosion = cv2.erode(erosion, kernel_4, iterations=1)dilation = cv2.dilate(erosion, kernel_2, iterations=1)dilation = cv2.dilate(dilation, kernel_4, iterations=1)dilation = cv2.dilate(dilation, kernel_8, iterations=1)ret, binary = cv2.threshold(dilation, 127, 255, cv2.THRESH_BINARY)  # 二值化,将滤波后的图像变成二值图像放在binary中cnts = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts) red_list = []for c in cnts:# compute the center of the contourM0_red = cv2.moments(c)
​# cv2.drawContours(frame, [c], -1, (0, 255, 0), 2)car_video_location = [int(M0_red["m10"] / M0_red["m00"]), int(M0_red["m01"] / M0_red["m00"])]cv2.circle(frame, (car_video_location[0], car_video_location[1]), 7, (0, 0, 255), -1)cv2.putText(frame, "red", (car_video_location[0] - 20, car_video_location[1] - 20),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)cv2.imshow("Image", frame)red_point = [int(M0_red["m10"] / M0_red["m00"]), int(M0_red["m01"] / M0_red["m00"])]# red_point = [int(M0["m10"] / M0["m00"]), int(M0["m01"] / M0["m00"])red_list = red_list + red_point# print('红色', red_list)# if len(red_list) == 6:  # 起始可能识别不到3个红色块,等都识别到,再输出坐标#     print('红色块1', red_list[0], red_list[1])#     print('红色块2', red_list[2], red_list[3])#     print('红色块3', red_list[4], red_list[5])return red_list
​#  主函数:识别红色和绿色并在输出视频实时显示标记中心
import cv2
import numpy as np
import imutilsif __name__ == "__main__":cap = cv2.VideoCapture(0)while True:ret, sframe = cap.read()green_video_point = green_point_video(sframe)  # 绿色点在视频中的坐标,并在输出标记green_video_point = red_point_video(sframe)cv2.imshow("Image", sframe)if cv2.waitKey(1) & 0xFF == ord('q'):breakcv2.waitKey(300)  # 延时30ms

 

运行效果


http://chatgpt.dhexx.cn/article/qXrA8qmX.shtml

相关文章

K210视觉体验—颜色识别

K210视觉体验—颜色识别 使用设备ZTFR开发板 颜色识别Lab 颜色空间构造函数示例代码1:识别RGB(红,绿,蓝)示例代码2:识别指定颜色 使用设备 ZTFR开发板 颜色识别 MaixPy 集成了 RGB565 颜色块识别 find_blo…

Halcon 学习笔记八:颜色识别

Halcon 学习笔记八:颜色识别 一、图像处理需要的知识二、图像处理的预处理和分割过程二、颜色识别的方法三、例子一四、例子二五、例子三 一、图像处理需要的知识 1.图像处理基础(rgb(hsv),gray) 2.图像灰度变换(scale_img) 3.图像基础(emph…

基于Python的颜色识别器

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 在这篇文章中,我们将展示如何使用Python构建颜色识别器。此过程也称为“颜色检测”。我们将创建一个基本应用程序,该应用程序将帮助我们检测图像…

python颜色识别demo

一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。 H: 0 — 180 S: 0 — 255 V: 0 — 255 此处把部分…

openCV-python实现颜色识别

本文将介绍使用OpenCV实现颜色识别的详细步骤 代码。 背景介绍 在截取出模板匹配到的logo区域之后,需要判断logo是什么颜色。本案例中要识别的对象是纯色的所以适用下面的颜色识别方法,有不同需求的请斟酌借鉴。 原理介绍 数字图像处理中常用的采用模型…

python颜色识别,46行代码实现865种颜色识别,看过的都说顶呱呱!

1.先介绍我做的颜色识别的功能,简单的说,就是该脚本可以打开图片,在图片上点击某个区域,可以识别某个区域的颜色,颜色识别准确度很高,很多时候颜色识别是辅助物体的颜色识别,但这个代码你们可以…

OpenCV(Python)颜色识别(一)

1. 基本原理 1.1 彩色模型 数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时…

OpenCV颜色识别

彩色模型 数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB…

LabVIEW色彩匹配实现颜色识别、颜色检验(基础篇—13)

目录 1、颜色识别 2、颜色检验 色彩匹配(Color Matching)是将模板图像与待测图像或其中某一区域的颜色进行比较,判断它们是否相同或相近的过程。它可以用于颜色识别、颜色检验以及彩色对象定位等基于色彩信息比较的应用程序。 色彩匹配通常…

Python 对图片进行颜色识别

场景:在进行压力测试时,需要判断图片的某一块区域是否是黑色 这里使用的是OpenCV库对图片进行颜色的识别,几乎可以识别所有常见的颜色 直接上代码 import cv2 import numpy as np import collectionsclass colorList:def getColorList(sel…

OpenCV颜色识别(所有颜色均可识别)

OpenCV颜色识别实例(所有颜色均可识别) 欢迎访问我的博客sakuraの绘梨衣 本文中的颜色识别为红色,颜色阈值设置如下: lower_apple np.array([0, 100, 100]) higher_apple np.array([10, 200, 200])识别其他颜色可以参考HSV颜色…

如何实现视觉识别颜色

1. 功能说明 通过摄像头识别特定颜色(红、绿、蓝)。摄像头采集图像信息并通过WiFi将信息传递给PC端,然后PC端根据比例判断出目标颜色在色盘上的所属颜色后,指针便会指向对应颜色。 红、绿、蓝-色块 2. 电子硬件 本实验中采用了以下…

Halcon——颜色识别提取

文章目录 前言一、颜色识别原理二、颜色识别为什么将其转换至HSV颜色空间三、源代码写在最后 前言 【Halcon】颜色识别提取 这里以嘉庚建筑风格为例~ 一、颜色识别原理 载入图像后,将其转换至HSV颜色空间,通过判断每个像素是否在所选取的范围内&…

颜色识别、轮廓识别-树莓派 Opencv-基于Python学习记录DAY-4

学习颜色识别之前先介绍一下新认识的图像格式HSV: 色调H 用角度度量,取值范围为0~360,从红色开始按逆时针方向计算,红色为0,绿色为120,蓝色为240。它们的补色是:黄色为60,青色为18…

opencv--颜色识别

目录 一、主要函数介绍 二、颜色识别 三、其他相关函数介绍 1. cv2.resize 2. np.array(x,dtype) 3. cv2.inRange() 4. cv2.imshow() 5.cv2. waitKey() 四、掩膜 一、主要函数介绍 通常,相机在RGB颜色模式下工作,但这种模式受到光线的影响较大&am…

颜色识别OpenCV

下面有多种颜色识别方法,可根据需要进行选择 ①colorList.py(颜色库) import numpy as np import collectionsdef getColorList():dict collections.defaultdict(list)# blacklower_black np.array([0, 0, 0])upper_black np.array([180…

SPSSAU统计分析软件,一键输出三线表格式分析结果

SPSSAU最近和一位朋友聊天,她在写论文,说到自己用SPSS软件对问卷数据做统计分析,做完之后分析结果有了,拿给导师看,但她们导师说,论文中的表格必须是三线表格式,然后她就得要自己手动制作三线表…

SPSS软件的数据分析与GDP和人口老龄化的预测

目录 前言 问题二模型的建立与求解 1.2.1 ARIMA时间序列模型的建立与求解 平稳性检验 的时间序列预测模型的建立与求解 ​​​​​​​模型的检验 ​​​​​​​对于的时间序列预测模型的建立与求解 ​​​​​​​模型的检验 ​​​​​​​ 前言 SPSS软件的数据分析与GDP和…

数据分析与挖掘———SPSS Moderler

数据分析与挖掘———SPSS Moderler 一、Modeler给概述 1、SPSS Modeler基本认识 IBM SPSS Modeler是一组数据挖掘工具,通过这些工具可以采用商业技术快速建立预测性模型,并将其应用于商业活动,从而改进决策过程。 SPSS Modeler提供了各种…

用SPSS做数据分析(1)

写在前面: 爬虫今天停更一天,今天是周六,今天要把最近网课学习SPSS课程做个总结和回顾,明天继续更新爬虫的内容,今天这篇文章主要是SPSS中的数据管理,一些关于数据的简单操作,是属于SPSS中比较基础的内容,希望看完博客能动手亲自实践一下,会有奇效 文章目录 写在前面:SPSS数据…