OpenCV学习心得——python版——图像的载入、显示、保存与色彩空间
FOR THE SIGMA
FOR THE GTINDER
FOR THE ROBOMASTER
简介:
本笔记仅供参考
操作系统版本:Windows10
编译器:JetBrains PyCharm 2019.1.3 x64
所需库:
opencv-python2.xx.xx以上
numpy
pillow
电子版书籍下载地址
暂无资源
内容:
如何在PyCharm安装库:
第一步:打开pycharm任意新建一个项目文件(至于软件怎么安装自己上网查,目前不提供安装教程)
上图中左边为默认选项,右边第一个(location)是你当前建立项目后保存的地点(你自己定义),后面的不变。
第二步:菜单栏—>文件—>设置(旁边带有锤子的图标)打开
选中左边的项目名字,点击右边的+号键来添加库,同时你也可以将上方的选项换成你安装好的库目录,这样就不必每次新建项目都需要添加库。
图像的载入:
使用函数 cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,第二个参数是要告诉函数应该如何读取这幅图片
类型 | 作用 |
---|---|
cv2.IMREAD_COLOR | 读入一副彩色图像。图像的透明度会被忽略,这是默认参数。 |
cv2.IMREAD_GRAYSCALE | 以灰度模式读入图像 |
cv2.IMREAD_UNCHANGED | 读入一幅图像,并且包括图像的 alpha 通道 |
例子:
import cv2
img = cv2.imread('sss.jpg',0) #这里也可以套用路径:"D:\...."
注意:就算图像的路径是错的,OpenCV 也不会提醒你的,但是当你使用命令print img时得到的结果是None。同时因为是读取所以并不会显示图像,请看下一步。
图像的显示:
使用函数 cv2.imshow() 显示图像。窗口会自动调整为图像大小。第一个参数是窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字。
cv2.namedWindow('image', cv2.WINDOW_NORMAL) #创建窗口image,大小自动
cv2.imshow('image',img) #显示img里读取(缓存下来的数据)的图片到image窗口
cv2.waitKey(0) #函数等待特定的几毫秒,以继续进行下一步
cv2.destroyAllWindows() #关闭
保存图像:
使用函数 cv2.imwrite() 来保存一个图像。第一个是你保存的文件名,第二个是你要保存的图像(从img里面)。
cv2.imwrite('messigray.png',img)
最后
import cv2
img = cv2.imread('sss.jpg',0) #读取
cv2.imshow('image',img) #显示
k = cv2.waitKey(0) #按键
if k == 27:
cv2.destroyAllWindows() #ese关闭
elif k == ord('s'): #另存图像
cv2.imwrite('messigray.png',img) #写入
cv2.destroyAllWindows() #关闭
色彩空间:
主要为常见的三种:RGB、GRAY、HSV
转换则为两种:BGR-灰度图,跟BGR-HSV
通过函数
cv2.cetColor(input_image,flag) # flag就是我们要转换的类型
来转换。
关于三种常见色彩空间的详解可以参考其他博客
参考下面如何提取图中蓝色部分
提取蓝色物体步骤:
1、从视频中获取每一帧图像如果是图像则直接截取
2、将图像转换到HSV空间
3、设置HSV阈值到蓝色范围
4、获取蓝色物体
import cv2
import numpy as np
img=cv2.imread('sss.jpg',cv2.IMREAD_COLOR) #读取
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #hsv转换
lower_blue=np.array([110,50,50]) #HSV阈值到蓝色范围
upper_blue=np.array([130,255,255])
mask=cv2.inRange(hsv,lower_blue,upper_blue) #构建物体掩膜(HSV)
res=cv2.bitwise_and(img,img,mask=mask) #对原图像和掩膜进行位运算并输入为res
cv2.imshow('hsv',hsv) #显示hsv
cv2.imshow('mask',mask) #显示物体掩膜
cv2.imshow('res',res) #显示提取图
cv2.imshow('img',img) #显示原图
k=res=cv2.waitKey(5)&0xFF #按键
while k==27: #退出
break
cv2.waitKey(0)