我是靠谱客的博主 寒冷铃铛,最近开发中收集的这篇文章主要介绍Python-树莓派 + Opencv 实现颜色的识别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我这里使用了两个颜色来做测试
分别是红色和蓝色
当摄像头前面是红色的时候就打印出 Red
当摄像头前面是蓝色的时候就打印出 Blue

import numpy as np
import cv2

red_lower = np.array([0,43,46])
red_upper = np.array([10,255,255])
blue_lower = np.array([100,43,46])
blue_upper = np.array([124,255,255])
cap = cv2.VideoCapture(0)

cap.set(3,320)
cap.set(4,240)
def ChestRed():
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, red_lower, red_upper)
    mask = cv2.erode(mask, None, iterations=2)
    mask = cv2.GaussianBlur(mask, (3, 3), 0)
    return mask
def ChestBule():
    ret, frame = cap.read()
    frame = cv2.GaussianBlur(frame, (5, 5), 0)
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, blue_lower, blue_upper)
    mask = cv2.GaussianBlur(mask, (3, 3), 0)
    cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
    if 25 < len(cnts) < 29:
        print("Blue!")
while 1:
    ret,frame = cap.read()
    frame = cv2.GaussianBlur(frame,(5,5),0)
    hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
    mask = ChestRed()
    ChestBule()
    res = cv2.bitwise_and(frame,frame,mask=mask)
    cnts = cv2.findContours(mask.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2]
    if 20<len(cnts)<30:
        print("Red!")

    cv2.imshow("mask",mask)
    cv2.imshow("res",res)
    if cv2.waitKey(5) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

用电脑测试成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在是可以检查出颜色了,如果要移植到树莓派上的话也是可以的
就是前提得是树莓派上的opencv版本是3以上

最后

以上就是寒冷铃铛为你收集整理的Python-树莓派 + Opencv 实现颜色的识别的全部内容,希望文章能够帮你解决Python-树莓派 + Opencv 实现颜色的识别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部