OpenCV中的图像处理

好久不见,你们都怎么样?有没有想我 LoL~

我们来探索下图像处理,这将会是我们以后坚实的技术后盾。

颜色空间的转换:

1.转换颜色空间

我们经常用到两种颜色空间的转换方法:

  • a.    BGR与GRAY的 转换
  • b.    BGR与HSV的转换

GRAY我们都已经清楚了,是灰度图像;但HSV又是什么呢?

关于HSV具体的解释会在后面的旅途中慢慢给大家呈现。

转换颜色空间的函数是:

cv2.cvtColor(input_image,flag)

input_image是输入的图像,

flag是转换类型

那么上述两种方式的转换要怎么写呢?

只需将    flag(  转换类型  )    写出来就成啦~
cv2.COLOR_BGR2GRAY    (BGR与GRAY的转换)
cv2.COLOR_BGR2HSV        (BGR与HSV的转换)
调用所有flag,opencv中有超过150中颜色空间转换,大家可以用代码自己调用查看~

2.大家注意!这一章是重点,

物体跟踪

知道了BGR与HSV的转换,我们可以用这个提取带有某个特定颜色的物体。

这里我们了解到HSV颜色空间要比BGR空间中更容易表示一个特定颜色。(HSV比BGR在视觉上更具有直观性~)

接下来我们要实现一个目的:

从摄像头提取到蓝色的物体

我们应该怎么做呢?来想一下思路~

  • 1.从视频中获取每一帧图像
  • 2.将图像转换到HSV颜色空间
  • 3.设置HSV阈值到蓝色范围
  • 4.获取蓝色物体

这些我们都已经熟悉了,来写一下代码吧~

首先要调用库

  • import cv2
  • import numpy as np

从摄像头捕获

  • cap = cv2.VideoCapture(0)
  • while(1):
  •     ret,frame = cap.read(0)

转换HSV颜色空间

  • hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)

设置蓝色阈值,还记得吗?我们用数组来表示的~

记住这是在HSV中蓝色颜色阈值,不要弄错了!

  • lower_blue = np.array([110,50,50])
  • upper_blue = np.array([130,255,255])

看了这个,我有些没搞清楚蓝色的阈值是怎么来的,不过大家不要急,后来的学习中会涉及这个,我们很快就会学到~

然后就是mask了,这个我们上一章讲过,

  • mask = cv2.inRange(hsv,lower_blue,upper_blue)

我们用

  • cv2.inRange

提取图像中在阈值中间的部分

 lower 表示阈值下限;

upper 表示阈值上限。

接下来进行位运算:

  • res = cv2.bitwise_and(frame,frame,mask = mask)

然后就是显示图像,关闭窗口啦~

上代码喽~

 

# -*- coding:utf-8 -*-
"""
Created on Thur Feb 2 大年初六 14:01:18 2017

@author: Y

"""

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(1):

    ret,frame = cap.read(0)

    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)

    res = cv2.bitwise_and(frame,frame,mask = mask)

    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k = cv2.waitKey(5)&0xFF
    if k == 27:
        break

cv2.destroyAllWindows()

 

来看下结果如何~

看看效果如何,这是深蓝色,我们再试试一张浅蓝色的~
带有浅蓝色的几乎没有识别~

可以看出阈值的影响很严重,对浅蓝色也就是和阈值的最高值接近,就会产生不能很清楚的识别的情况。

另外,图像还有很大的噪声,以后我们陆陆续续的都会讲到哒~

 

今天我们就讲到这里啦,感觉这一章好有潜力啊,写了好久总感觉缺点什么没有写,改了又改以后还是决定放出来。我是Y,我们离成功又迈进了一步,让我们鼓起力量,继续前行!

发表评论

电子邮件地址不会被公开。 必填项已用*标注