当前位置:网站首页>Opencv实现颜色检测
Opencv实现颜色检测
2022-06-28 04:57:00 【Keep_Trying_Go】
文章目录
1.前置知识点
(1) HSV,Opencv中的Mat和图片的属性
https://mydreamambitious.blog.csdn.net/article/details/125339425
(2)Opencv中基础的知识点
https://mydreamambitious.blog.csdn.net/article/details/125351256
(3)Opencv实现图像的基本变换
https://mydreamambitious.blog.csdn.net/article/details/125428402
2.代码实战
(1)创建窗口和设置视频帧的大小调整
cap=cv2.VideoCapture(0)
#设置显示的高宽
cap.set(cv2.CAP_PROP_FRAME_WIDTH,1100)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,750)
(2)翻转图像和将图片从BGR->HSV
ret,frame=cap.read()
#对图像帧进行翻转(因为opencv图像和我们正常是反着的
frame=cv2.flip(src=frame,flipCode=2)
# frame=cv2.resize(src=frame,dsize=(750,600))
hsv_frame=cv2.cvtColor(src=frame,code=cv2.COLOR_BGR2HSV)
(3)获取hsv的色相值hue
#获取hsv的色相值hue
pixel_center=hsv_frame[cy,cx]
hue_value=pixel_center[0]
(4)根据色相值对颜色进行定义
color='Unknow'
if hue_value<5:
color='RED'
elif hue_value<22:
color='ORANGE'
elif hue_value<33:
color="YELLOW"
elif hue_value<78:
color="GREEN"
elif hue_value<131:
color="BLUE"
elif hue_value<167:
color="VIOLED"
else:
color="RED"
(5)绘制检测区域
#绘制检测区域
cv2.rectangle(img=frame,pt1=(width//2+100,20),pt2=(width//2+390,200),color=(0,255,0),thickness=2)
cv2.putText(img=frame,text='detect locate',org=(width//2+150,cy-10),fontFace=cv2.FONT_HERSHEY_SIMPLEX,
fontScale=1.0,color=(0,255,0),thickness=2)
(6)绘制检测结果的文本
#获取检测位置的物体颜色
b,g,r=int(frame[cy,cx][0]),int(frame[cy,cx][1]),int(frame[cy,cx][2])
#绘制文本
cv2.putText(img=frame,text=color,org=(20,50),fontFace=cv2.FONT_HERSHEY_SIMPLEX,
fontScale=1.0,color=(0,255,0),thickness=2)
cv2.circle(img=frame,center=(cx+30,cy),radius=5,color=(0,255,0),thickness=3)
(7)整体代码
import os
import cv2
import numpy as np
cap=cv2.VideoCapture(0)
#设置显示的高宽
cap.set(cv2.CAP_PROP_FRAME_WIDTH,1100)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,750)
while cap.isOpened():
ret,frame=cap.read()
#对图像帧进行翻转(因为opencv图像和我们正常是反着的
frame=cv2.flip(src=frame,flipCode=2)
# frame=cv2.resize(src=frame,dsize=(750,600))
hsv_frame=cv2.cvtColor(src=frame,code=cv2.COLOR_BGR2HSV)
#获取读取的帧的高宽
height,width,channel=frame.shape
# print(height,width)
#获取检测点位置
cx = width // 2+190
cy=height//6+30
#绘制检测区域
cv2.rectangle(img=frame,pt1=(width//2+100,20),pt2=(width//2+390,200),color=(0,255,0),thickness=2)
cv2.putText(img=frame,text='detect locate',org=(width//2+150,cy-10),fontFace=cv2.FONT_HERSHEY_SIMPLEX,
fontScale=1.0,color=(0,255,0),thickness=2)
#获取hsv的色相值hue
pixel_center=hsv_frame[cy,cx]
hue_value=pixel_center[0]
color='Unknow'
if hue_value<5:
color='RED'
elif hue_value<22:
color='ORANGE'
elif hue_value<33:
color="YELLOW"
elif hue_value<78:
color="GREEN"
elif hue_value<131:
color="BLUE"
elif hue_value<167:
color="VIOLED"
else:
color="RED"
#获取检测位置的物体颜色
b,g,r=int(frame[cy,cx][0]),int(frame[cy,cx][1]),int(frame[cy,cx][2])
#绘制文本
cv2.putText(img=frame,text=color,org=(20,50),fontFace=cv2.FONT_HERSHEY_SIMPLEX,
fontScale=1.0,color=(0,255,0),thickness=2)
cv2.circle(img=frame,center=(cx+30,cy),radius=5,color=(0,255,0),thickness=3)
cv2.imshow('frame',frame)
key=cv2.waitKey(1)
if key==27:
break
cap.release()
cv2.destroyAllWindows()
# #图片的读取和缩放
# img=cv2.imread('images/1.png')
# img=cv2.resize(src=img,dsize=(450,450))
# #显示图片
# cv2.imshow('img',img)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')
边栏推荐
- Redis 的 最新windows 版本 5.0.14
- Binary sort tree: BST
- UI automation test framework construction - write an app automation
- A doctor's 22 years in Huawei (full of dry goods)
- Google Earth Engine(GEE)——全球洪水数据库 v1 (2000-2018年)
- 如何学习可编程逻辑控制器(PLC)?
- C语言全局变量(c文件和h文件中的全局变量、静态全局变量)使用注意事项
- To quickly download JDK, in addition to the official Oracle download, is there a download address for the latest version available in China
- Sorting out some topics of modern exchange principle MOOC
- 现代交换原理MOOC部分题目整理
猜你喜欢
TACo:一种关于文字识别的数据增强技术
Congratulations to myself, official account has more than ten thousand fans
Severe tire damage: the first rock band in the world to broadcast live on the Internet
2022年G3锅炉水处理复训题库模拟考试平台操作
!‘cat‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
native关键字的作用
Sword finger offer 53 - I. find the number I in the sorted array (improved bisection)
灵活的IP网络测试工具——— X-Launch
OracleData安装问题
Sword finger offer 47 Maximum gift value (DP)
随机推荐
无线传感器网络学习笔记(一)
Standard particle swarm optimization C language program
Excel将一行的内容进行复制时,列与列之间是用制表符“\t”进行分隔的
Redis 的 最新windows 版本 5.0.14
分享一个因子挖掘的利器:遗传规划
Feign remote call fallback callback failed, no effect
[Matlab bp regression prediction] GA Optimized BP regression prediction (including comparison before optimization) [including source code 1901]
IP数据报的发送和转发过程
LeetCode 88:合并两个有序数组
短视频本地生活版块成为热门,如何把握新的风口机遇?
店铺进销存管理系统源码
Taco: a data enhancement technique for character recognition
程序员坐牢了,会被安排去写代码吗?
metaRTC5.0编程之p2p网络穿透(stun)指南
[csp-j2020] excellent splitting
多线程实现 重写run(),怎么注入使用mapper文件操作数据库
CI & CD must be known!
C语言中函数是什么?编程中的函数与数学中的函数区别?理解编程语言中的函数
机器人学DH参数及利用matlab符号运算推导
TACo:一种关于文字识别的数据增强技术