OpenCV 中的图像处理


颜色空间转换
目标
• 你将学习如何对图像进行颜色空间转换,比如从BGR 到灰度图,或者从BGR 到HSV 等。
• 我没还要创建一个程序用来从一幅图像中获取某个特定颜色的物体。

• 我们将要学习的函数有:cv2.cvtColor(),cv2.inRange() 等。

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 22 14:06:05 2018
"""

import cv2
import numpy as np
from matplotlib import pyplot as plt

#opencv 读图
img = cv2.imread("E:\\python\\opencv\\images\\demo0.png")

#转换颜色空间
#对于BGR$Gray 的转换,我们要使用的flag 就是cv2.COLOR_BGR2GRAY。同样对于BGR$HSV 的转换,我们用的flag 就是cv2.COLOR_BGR2HSV。
#你还可以通过下面的命令得到所有可用的flag。
'''
flags=[i for i in dir(cv2) if i.startswith('COLOR_')]
print flags
'''

#注意:在OpenCV 的HSV 格式中,H(色彩/色度)的取值范围是[0,179],S(饱和度)的取值范围[0,255],V(亮度)的取值范围[0,255]。但是不
#同的软件使用的值可能不同。所以当你需要拿OpenCV 的HSV 值与其他软件的HSV 值进行对比时,一定要记得归一化。

#物体跟踪
#提取的是一个蓝色的物体例子
'''
cap=cv2.VideoCapture(0)
while(1):
# 获取每一帧
ret,frame=cap.read()
# 转换到HSV
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()
'''

#图像平滑,OpenCV 提供的函数cv.filter2D() 可以让我们对一幅图像进行卷积操作。
'''
kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.show()
'''

#这是由一个归一化卷积框完成的。他只是用卷积框覆盖区域所有像素的平均值来代替中心元素。可以使用函数cv2.blur() 和cv2.boxFilter() 来完这个任务。
'''
blur = cv2.blur(img,(5,5))
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()
'''

#高斯模糊,实现的函数是cv2.GaussianBlur()。我们需要指定高斯核的宽和高(必须是奇数)。以及高斯函数沿X,Y 方向的标准差。
#如果我们只指定了X 方向的的标准差,Y 方向也会取相同值。如果两个标准差都是0,那么函数会根据核函数的大小自己计算。高斯滤波可以有效的从图像中去除高斯噪音。
#0 是指根据窗口大小(5,5)来计算高斯函数标准差
'''
blur = cv2.GaussianBlur(img,(5,5),0)
'''



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2018 ITdaan.com 粤ICP备14056181号