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)
'''


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Soyoger

听说打赏的都进了福布斯排行榜。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值