树莓派3B基于python用opencv进行颜色识别

图像处理之颜色检测分类标记(Python OpenCV实现) 最近开始接触图像处理,接到的首个任务就是将实验室用颜色标记好的数据再在原图上按不同颜色框出来,以在模型预测阶段检查预测效果。下面使用一张摇滚乐队Halestrom的图片进行说明。 首先,我拿到的原图如下图所示: 图1 我们将原始图片按照人、地板、墙三种元素进行标记,得到下图: 图2 将上述两张图片输入我们的模型,那么模型能够做到给出一张新的图片它就能够输出一张按颜色分类标记元素的图片... 阅读详情

树莓派opencv读取一帧图像

如果你的树莓派还没有安装opencv,请参考我的这篇文章安装树莓派3B安装opencv。
用以下命令查看设备,若存在video0,则说明摄像头设备正常

ls /dev/

opencv读取一帧图像demo:

import cv2
import numpy as np
camera=cv2.VideoCapture(0)
while True:
	ret,frame=camera.read()
	if ret: #如果当前帧有效
		#TODO some image process
	else:
		continue
		
	cv2.imshow("frame",frame)
	cv2.waitKey(10)

opencv颜色识别流程

1.将RGB模型转换成HSV模型

RGB模型适合显示,但却并不适合作为颜色识别的模型。
HSV更加符合人眼的感受,将其作为颜色识别的模型会大大提高识别的鲁棒性,因为HSV模型颜色识别大大减少了对环境光的依赖。
opencv提供了将RGB转换到HSV的函数:

hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

2.opencv中,HSV模型的取值范围

H∈ [0, 180), S ∈ [0, 255], V ∈ [0, 255]

经过实验,蓝色在HSV模型中的取值是:H在100到140之间,S和V都在90到255之间。一些基本的颜色H的取值可以如下设置:

Orange  0-22
Yellow 22- 38
Green 38-75
Blue 75-130
Violet 130-160
Red 160-179

3.对彩色图像进行直方图均衡

#split hsv_img into 3 channels
hsvSplit = cv2.split(hsv_img)
#Hist equalization only on the V channel
cv2.equalizeHist(hsvSplit[2],hsvSplit[2])
#merge hsv_img using the result of V channel hist equalization
cv2.merge(hsvSplit,hsv_img)

4.使用opencvAPI进行颜色阈值检测,得到二值图像

    #yellow parameter  
    iLowH = 10
    iHighH = 55
    iLowS = 40
    iHighS = 255
    iLowV = 20
    iHighV = 255
#using OpenCV API to detect special color we interest
#detect each pixel in hsv_img
#if current pixel HSV value is between the theshold we set before,then set this pixel 255 in the output image
#else,set this pixel 0 in the output image
imgThresholded = cv2.inRange(hsv_img, (iLowH, iLowS, iLowV), (iHighH, iHighS, iHighV))

5.对二值图像进行开操作,删除零星噪点

#perform open opration for imgThresholded, in order to drop some noisy pixels 
element = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
imgThresholded = cv2.morphologyEx(imgThresholded, cv2.MORPH_OPEN, element)

6.再进行闭操作,连接一些连通域

#then perform close opration to connect some separated white small piece
imgThresholded = cv2.morphologyEx(imgThresholded, cv2.MORPH_CLOSE, element)

这样得到的二值图像就是颜色识别后的结果。

opencv颜色识别的完整流程

import cv2
import numpy as np
camera=cv2.VideoCapture(0)

def cam_detection_color_hsv(hsv_img):
    #set H S V threshold
    #red parameter
    '''
    iLowH = 160
    iHighH = 179
    iLowS = 90
    iHighS = 255
    iLowV = 90
    iHighV = 255
    '''
    #yellow parameter  
    iLowH = 10
    iHighH = 55
    iLowS = 40
    iHighS = 255
    iLowV = 20
    iHighV = 255
    '''
    #black parameter
    iLowH = 0
    iHighH = 180
    iLowS = 0
    iHighS = 255
    iLowV = 0
    iHighV = 48
    '''
    
    #对彩色图像做直方图均衡化
    #split hsv_img into 3 channels
    hsvSplit = cv2.split(hsv_img)
    #Hist equalization
    cv2.equalizeHist(hsvSplit[2],hsvSplit[2])
    #merge hsv_img using the result of hist equalization
    cv2.merge(hsvSplit,hsv_img)
    
    #using OpenCV API to detect special color we interest
    #detect each pixel in hsv_img
    #if current pixel HSV value is between the theshold we set before,then set this pixel 255 in the output image
    #else,set this pixel 0 in the output image
    imgThresholded = cv2.inRange(hsv_img, (iLowH, iLowS, iLowV), (iHighH, iHighS, iHighV))
    
    #perform open opration for imgThresholded, in order to drop some noisy pixels 
    element = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    imgThresholded = cv2.morphologyEx(imgThresholded, cv2.MORPH_OPEN, element)
    #then perform close opration to connect some separated white small piece
    imgThresholded = cv2.morphologyEx(imgThresholded, cv2.MORPH_CLOSE, element)
                                      
    return imgThresholded
  


while(True):
    ret,frame=camera.read()
    if ret: #如果当前帧有效
        hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    else:
        continue
    
    threshold_img = cam_detection_color_hsv(hsv_frame)
    
    cv2.imshow("threshold_img",threshold_img)
    cv2.imshow("frame",frame)
    cv2.waitKey(10)
树莓派利用OpenCV的图像跟踪、人脸识别等 树莓派安装openCV做图像识别跟踪 阅读详情

相关推荐

树莓派从开机到安装Opencv

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、硬件准备二、软件准备三、具体操作1.格式化和烧录2.SSH配置和远程桌面使用2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 本文使用的树莓派为树莓派4b,主要是为了用python做颜色识别和二维码识别。到开始做到写这篇文件花了相当久的时间,虽然看了很多文章,但总有一些问题,不只是树莓派系统版本的问题,还有无法正常安装Opencv。记录一些自己操作过的步骤 提示:以下是本篇文章正文内容,下面案例可供参考.

CangYan08的博客 4250

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

1

qq_52837539的博客 6826

从零到一:基于树莓派4B与OpenCV的视觉循迹小车实战解析

本文详细解析了如何基于树莓派4B与OpenCV从零搭建视觉循迹小车,涵盖硬件组装、软件配置、核心算法及性能优化等关键步骤。通过实战案例展示图像处理与自动控制的完美结合,特别适合嵌入式开发初学者练手,实现低成本高性能的机器人项目。

优快云头条 869

python中使用opencv的HSV颜色空间提取物体

把PS中H的值除以2,S乘255,V乘255,可以得到对应的opencv的HSV值。S:saturation饱和度(0~100),形容颜色的深浅,如浅红、大红、深红。opencv中的HSV范围,H是0-180,S是0-255,V是0-255。PS中的HSV范围,H是0-360,S是0-1,V(B)是0-1。V:value色调(0~100),色彩的亮度。H:hue 色相(0~360),红绿蓝。但是HSV颜色空间却规定的是,H范围0。

李昂的博客 1863

树莓派OpenCV小车本地视觉闭环系统实战

嵌入式视觉系统是指在边缘设备上完成图像采集、处理与运动控制的完整技术链,其核心在于算法轻量化、实时性保障与硬件协同优化。基于OpenCV的本地视觉处理可规避网络延迟与隐私风险,广泛应用于智能小车、工业巡检和教育机器人等场景。本文聚焦树莓派4B平台,详解HSV颜色空间校准、PID转向控制、状态机驱动的巡线逻辑及ARM端OpenCV编译调优等关键技术,覆盖从色彩识别到电机PWM输出的全栈实现,特别适合嵌入式CV入门与工程化落地参考。

weixin_42550597的博客 230

树莓派Python+OpenCV颜色识别、跟随与巡线小车实战解析

计算机视觉在嵌入式平台上的典型应用,往往从颜色识别开始。通过HSV颜色空间转换、阈值分割与轮廓提取,机器能够定位目标色块,进而实现目标跟随与巡线导航。树莓派作为低功耗计算平台,搭配Python与OpenCV,可完成图像采集、处理、决策与电机控制的全链路闭环。本文从硬件选型、环境搭建、HSV阈值调参、PID控制等核心环节切入,结合实际部署中的常见问题,详细拆解视觉小车的感知-决策-执行流程。这套工程方法不仅适用于课程设计,也为自动驾驶小车、智能物流分拣等更复杂的视觉系统提供了可迁移的技术基础。内容兼顾原理与工

weixin_29194817的博客 341

Opencv——树莓派3B使用GPIO

前言:这是我第一次使用OpenCV,但我必须承认,我已经爱上了这个“开源计算机视觉库”。 OpenCV对学术用途和商业用途都免费。它有C++、C、Python和Java的接口,并且支持Windows、Linux、MacOS、iOS和Android系统。在我的OpenCV教程系列中,我们将专注于使用树莓派(当然,操作系统就是Raspbian了)和Python。OpenCV为高效计算而生,极大地专注于实时应用。因此,它对于物理计算(即使用可以感知和响应模拟世界的软件和硬件来构建交互式物理系统)项目来说,简直再适

kimitoLMT的博客 6866

树莓派OpenCV视觉小车:颜色识别、跟随与巡线实战

嵌入式视觉系统是机器人感知环境的核心能力,其本质是图像采集、处理与运动控制的闭环。OpenCV作为跨平台计算机视觉库,在ARM架构的树莓派上需兼顾算法鲁棒性与硬件资源约束。本文聚焦HSV色彩空间转换、形态学去噪、轮廓筛选等基础图像处理原理,解析光照不变性设计、实时性瓶颈优化与PID闭环控制策略的技术价值。适用于智能小车、工业分拣、AGV导航等边缘视觉应用场景,特别针对树莓派4B平台的USB摄像头适配、GStreamer加速、GPIO中断抖动等工程痛点提供可复用方案。

weixin_29185167的博客 222

小车第一步(识别成功)

经过两天的努力终于找到了一个方法可以检测颜色识别: 环境树莓派3B+ 1.输入nano yanseshibie.py,创建一个名为yanseshibie的python的文件 nano yanseshibie.py 2.文件编辑界面输入以下内容(现在程序叫复杂,后期会优化) 代码如下: import numpy as np#导入科学计数包 import cv2 #导入...

qq_42444944的博客 452

python-opencv 机器视觉 质心,形心 坐标 颜色分拣

python-opencv 机器视觉 质心,形心 坐标 颜色分拣 ,程序功能为区分物体颜色,算出物体在图像中的坐标,使用了十字,菱形,方形,X形去噪处理

在昇腾910B上,用kubeadm快速拉起一个双节点K8s集群(保姆级避坑指南)

本文详细介绍了在昇腾910B服务器上使用kubeadm快速搭建双节点Kubernetes集群的完整流程,包括环境准备、容器运行时配置、kubeadm初始化、节点加入与网络插件部署等关键步骤,特别针对ARM架构和昇腾芯片提供了优化配置和避坑指南。

weixin_29204749的博客 247

树莓派小车识别场地内特定颜色的直线并据此修正方向的方法

树莓派小车识别场地内特定颜色的线并据此修正方向的方法 明天肯定更新

wolfcsharp的博客 1280

MAS1102量产工具实战指南:从下载到开卡,附固件选择与RDT优化技巧

本文提供MAS1102量产工具的实战指南,涵盖从工具下载、短接识别到开卡操作的全过程。重点解析了固件选择策略与RDT优化技巧,帮助用户成功修复基于联芸MAS1102主控的固态硬盘,解决常见开卡错误并提升SSD性能与稳定性。

c2d3e4f的博客 2208

【亲测免费】 树莓派Python+OpenCV颜色识别、跟随、巡线小车

树莓派Python+OpenCV颜色识别、跟随、巡线小车 【下载地址】树莓派PythonOpenCV颜色识别跟随巡线小车 树莓派Python+OpenCV颜色识别、跟随、巡线小车 项目地址: https://gitcode.com...

gitblog_09801的博客 819

Frida实战:从adb连接到安卓设备参数加密Hook全流程解析

本文详细解析了使用Frida进行安卓应用动态分析的全流程。通过adb连接设备并部署Frida服务端,结合静态分析与动态Hook技术,精准定位并拦截关键函数,特别是针对参数加密等核心逻辑的实时监控与修改,为逆向分析与安全研究提供了高效实战方案。

weixin_29208077的博客 343

南邮-软件设计实验(C++版)

南邮软件设计 A档 一、分数统计 课题内容:   设计一个分数统计程序。包括学生信息的输入输出以及排序。通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法及友好界面的设计。 课题要求: (1)输入某班级学生的姓名、分数; (2)对(1)的分数进行降幂排列并输出; (3)具有输入输出界面。 示例代码: #include<bits/stdc++.h> using...

Dainelcw 1万+

树莓派应用--AI项目实战篇来啦-6.OpenCV 进行颜色检测

在后续章节中将尝试完成的一件事是检测和跟踪特定颜色的对象。为此,必须对OpenCV 如何解释颜色有更多的了解。通常,相机将在RGB颜色模式下工作,可以将其理解可以由红色,绿色和蓝色三种颜色的灯光构成的所有可能的颜色。我们将在这里使用BGR(蓝色,绿色,红色)代替。对于 BGR,像素由蓝色,绿色和红色这三个参数表示。每个参数通常具有0到255之间的值(或十六进制的0到FF)。例如,计算机屏幕上的纯蓝色像素的B值为255,G值为0,R值为0。

weixin_44845743的博客 2725

张量分解浅谈(四 Tucker 分解)

学完了SVD算法之后,我们继续回到张量几大分解的学习上来,本期学习的主要内容是张量的 Tucker 分解 以及 前面的CP分解还留下一点没有说完,正好一并补齐!后面的公式我将采用颜色标记,红色代表必须掌握,蓝色尽量掌握! 在这之前先附一张图,包含了各种运算符号的名称含义,大部分是前面说过或者使用过的: Tensor decomposition一 . Tucker 分解公式介绍和原理二 . 张量的 n-Rank 一 . Tucker 分解公式介绍和原理 我们先来看一张被使用过很多次的Trucker 分解图

欢迎来到 豪哥 的博客 1万+

【树莓派开发】02-基于OpenCV的车牌识别处理(LPR)

【说明】:本文环境:python2.7(感觉3问题也不大,可以自己改一改);opencv 3.4.1;树莓派-4;识别距离最少40厘米,直接手画了车牌进行演示,很low,估计换成标准车牌图像测试会提高准确率,而且直接使用了文1中的SVM训练好后模型数据,应该这块改进也能提高识别概率,最终表现是,中文字符的识别率较差,英文与数字较好,数字可以达到90%以上。

鉴云的博客 7550

SAP Gateway 中事务码 /IWFND/MAINT_SERVICE 的用法介绍

本文系统梳理了SAP Gateway中/IWFND/MAINT_SERVICE事务码的核心功能与运维实践。作为OData服务管理中樞,它支持服务注册激活、ICF节点配置、系统别名绑定、批量处理等关键操作。文章详解了服务目录、ICF节点、系统别名的配置要点,提供了批量激活、缓存清理、性能监控等实用技巧,并针对常见陷阱(如传输配置、删除残留)给出解决方案。通过制造业批量激活、零售业OAuth集成等案例,展示了事务码在企业级应用中的实际价值,为SAP Gateway运维提供了一套完整的治理清单。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 312

题解:洛谷 P14357 [CSP-J 2025] 拼数

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。小 R 想知道,在他所有能拼成的正整数中,最大的是多少。你需要帮助小 R 求出他能拼成的正整数的最大值。小 X 给了小 R 一个字符串。输出一行一个正整数,表示小 R 能拼成的正整数的最大值。中的任意多个数字,按任意顺序拼成一个正整数。,表示小 X 给小 R 的字符串。#普及-# #其他排序#洛谷:[P14357。

团爸讲算法 1398

放弃YOLO!用OpenCV颜色识别快速搞定树莓派机械臂的‘眼睛’(附完整Python代码)

本文介绍了一种基于OpenCV颜色识别的树莓派机械臂视觉系统方案,相比YOLO等深度学习模型,该方案在资源受限的嵌入式场景中表现更优。通过硬件对比、代码实现和实战调参,展示了如何快速搭建高效的颜色识别系统,并附完整Python代码。适用于单色/多色物体分拣等特定场景,显著降低CPU和内存占用。

weixin_30627341的博客 237

美军利用MANET技术实现无人作战单元协同作战

本文首先介绍了移动自组织网络 (MANET)以及Wave Relay®波形中继技术,并探讨了波形中继MANET平台在美空军ABMS项目等军事方面的运用情况。

guanyifu9的博客 855
上一篇: 树莓派3B安装opencv
下一篇: 树莓派小车识别场地内特定颜色的直线并据此修正方向的方法
Leo-Ma
博客等级 码龄11年 1701粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值