一、了解图像的存储形式
首先得了解下图像在计算机中存储形式:(为了方便画图,每列像素值都写一样了)
1.灰色图像
对于只有黑白颜色的灰度图,为单通道,一个像素块对应矩阵中一个数字,数值为0到255, 其中0表示最暗(黑色) ,255表示最亮(白色)
2.彩色图像
对于采用RGB模式的彩色图片,为三通道图,Red、Green、Blue三原色,按不同比例相加,一个像素块对应矩阵中的一个向量, 如[24,180, 50],分别表示三种颜色的比列, 即对应深度上的数字,如下图所示:
需要注意的是,由于历史遗留问题,opencv采用BGR模式,而不是RGB
二、opencv包安装
这里直接安装opencv-python包(非官方):
pip install opencv-python
三、openCV简单图像处理
1.图像的读取和写入
import cv2
# 读取图像
img = cv2.imread('Images/1.bmp')
# 展示图像 第一个参数为窗口名称,第二个参数为图像对象
cv2.imshow('newimage',img)
# 键盘绑定时间,阻塞监听键盘按键,返回一个数字
cv2.waitKey()
# 按键盘任意键,窗口关闭,
cv2.destroyAllWindows()
# 关闭指定窗口destroyWindow(窗口名称)
# cv2.destroyWindow('newimage')
# 将图片保存在本地,自己命令文件名
new_img = cv2.imwrite('3.jpg',img)
运行后如下图,按键盘任意键,窗口关闭,在demo01.py文件同路径下多了一个03.jpg
重点:
1. cv2.imread(img_path,flag) 读取图片,返回图片对象
img_path: 图片的路径,即使路径错误也不会报错,但打印返回的图片对象为None
flag:cv2.IMREAD_COLOR,读取彩色图片,图片透明性会被忽略,为默认参数,也可以传入1
cv2.IMREAD_GRAYSCALE,按灰度模式读取图像,也可以传入0
cv2.IMREAD_UNCHANGED,读取图像,包括其alpha通道,也可以传入-1
2. cv2.imshow(window_name,img):显示图片,窗口自适应图片大小
window_name: 指定窗口的名字
img:显示的图片对象
可以指定多个窗口名称,显示多个图片
3. cv2.waitKey(millseconds) 键盘绑定事件,阻塞监听键盘按键,返回一个数字(不同按键对应的数字不同)
millseconds: 传入时间毫秒数,在该时间内等待键盘事件;传入0时,会一直等待键盘事件
4. cv2.destroyAllWindows(window_name)
window_name: 需要关闭的窗口名字,不传入时关闭所有窗口
5. cv2.imwrite(img_path_name,img)
** img_path_name**:保存的文件名
img:文件对象