首页 技术 正文
技术 2022年11月8日
0 收藏 457 点赞 1,562 浏览 1311 个字
  • 学习如歌对图像进行颜色空间转换,从BGR到灰度图,或者从BGR到HSV等
  • 创建一个程序用来从一幅图像中获取某个特定颜色的物体

1.转换颜色空间

  OpenCV中有超过150种进行颜色空间转化的方法,但是实际上经常用到的也就两种:BGR<->Gray,BGR<->HSV

  要用的函数是cv2.cvtColor(input_img,flag)flag就是转换类型

  cv2.COLOR_BGR2GRAY 就是BGR<->Gray转换

  cv2.COLOR_BGR2HSV 就是BGR<->HSV的转化

(介绍一下HSV格式,H指色彩/色度,取值[0,179],S是饱和度[0,255],V是亮度[0,255]。不同软件使用的值可能不同,所以当需要拿OpenCV的HSV值与别的软件的HSV值进行对比时要注意归一化)

也可以用一下代码获得所有可用的flag

import cv2

flags = [i for i in dir(cv2) if i.startswith(‘COLOR_’)]
print(flags)

2.实现物体的跟踪

  在知道如何将BGR转换到HSV后,就可以利用这一点来提取带有某个特定颜色的物体。在HSV的颜色空间中要比BGR空间中个更容易表示某一个特定颜色。我们先尝试提取一个蓝色的物体,步骤如下:

  • 从视频中获取每一帧图像
  • 将图像转化到HSV空间
  • 设置HSV阈值到蓝色范围
  • 获取蓝色物体,还可以做更多的事

代码如下:

# -*- coding:utf-8 -*-import numpy as np
import cv2cap = cv2.VideoCapture(0)while True:
ret,frame = cap.read() hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)  #设置蓝色阈值范围
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])  #根据阈值构建掩码
mask = cv2.inRange(hsv,lower_blue,upper_blue)  #对原图像和掩码进行AND运算
res = cv2.bitwise_and(frame,frame,mask = mask)  #显示图像
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
k = cv2.waitKey(5)
if k == 27:
breakcv2.destroyAllWindows()

3. 怎么找到想要的颜色的阈值范围

其实就是巧妙利用cvtColor这个函数。比如要找一个绿色的HSV值:

import numpy as np
import cv2#先创建的一个绿色的像素点,注意此时是BGR
green = np.uint8([[[0,255,0]]])#这里必须用三层括号,对应图像矩阵,图像行,像素点BGR值#然后用函数转换即可获得想要的阈值
hsv_green = cv2.cvtColor(green,cv2.COLOR_BGR2HSV)
print( hsv_green)
#然后使用上下浮动一个范围(如100)来作为上下阈值
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,906
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,430
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,247
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,058
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,690
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,727