本文介绍基于python的opencv图像预处理基本操作,主要内容包括:
- 图像读显存操作
- 图像属性
- 图像ROI
本环境为:Anaconda3-2020.11-Windows-x86_64+Python3.8+OpenCV4.0.1,打开Anaconda的Spyder
1. 图像读显存操作
图像读显存普遍存在接下来的操作,因此这就是我们图像处理的框架
1.1 读取图像
- 从文件加载图像:
img = cv.imread(filename)
控制参数:
读取原图:cv.IMREAD_UNCHANGED
读取原图的灰度图:cv.IMREAD_GRAYSCALE
读取原图的彩图cv.IMREAD_COLOR
- 举例
img=cv2.imread(“d:\\image.jpg”)
1.2 显示图像
- 显示标签为Demo的img图像窗口
- 等待键盘指令退出
cv2.waitKey(0)
- 删除所有窗口
cv2.destroyAllWindows()
1.3 保存图像
- 将img保存到D盘命名为test.jpg的图片
cv2.imwrite(‘D:\\test.jpg',img)
1.4 完整的程序
在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在chapter2文件夹的2图像.py直接打开
# -*- coding: utf-8 -*- import cv2# 导入cv2库 i=cv2.imread("../image/test.jpg")#读取../image/test.jpg相对路径赋值给变量i cv2.imshow("Demo",i)#显示变量i图像 cv2.waitKey(0)#等待操作 cv2.destroyAllWindows()#关闭所有窗口 cv2.imwrite("../image/lesson1.png",i)#将变量i写入./image/lesson1.png,等同于复制图片为png格式
点击菜单栏绿色运行按钮或者“Run file(F5)”。然后回车关闭程序,该路径“…/image/”会新增“lesson1.png”
2. 图像属性
图像属性包含以下三个
• 1 形状:行、列、通道数
• 2 像素数目
• 3 图像的数据类型
2.1 shape函数
shape函数 可以获取图像的形状,返回包含行数,列数,通道数的元组。
灰度 返回行数,列数
彩色 返回行数,列数,通道数
2.2 size函数
size 可以获取图像的像素数目。
2.3 dtype函数
dtype 返回的是图像的数据类型。
2.4 完整的代码
在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在chapter3文件夹的3.4获取图像属性.py.直接打开
# -*- coding: utf-8 -*- import cv2 a=cv2.imread("../image\lena256.bmp",cv2.IMREAD_UNCHANGED)#读取灰度图像lena256.bmp赋值给a b=cv2.imread("../image\lenacolor.png",cv2.IMREAD_UNCHANGED)#读取彩图像lenacolor.png赋值给b print(a.shape) print(b.shape)#打印a/b形状 print(a.size) print(b.size)#打印a/b大小 print(a.dtype) print(b.dtype)#打印a/b类型
输出灰度图和彩图的相关属性
(256, 256) (512, 512, 3) 65536 786432 uint8 uint8
3. 图像ROI
• ROI(region of interest),感兴趣区域。
• 从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。
• 可以通过各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。
如下图Lena的面部就是我们关注的重点ROI
在代码编辑区输入如下测试代码(需要有图片支撑,否则报错),也可以直接下载代码,在chapter3文件夹的3.5感兴趣区域.py直接打开
# -*- coding: utf-8 -*- import cv2#导入cv2库 import numpy as np#导入numpy库重命名为np a=cv2.imread("../image\lenacolor.png") girl=cv2.imread("../image\girl.bmp")#读取Lena和girl图像 b=np.ones((101,101,3))#三通道101x101的1区域 b=a[220:400,250:350]#Lena的[220:400,250:350]赋给b girl[180:360,200:300]=b#b替代girl[180:360,200:300]区域 cv2.imshow("lenacolor",a) cv2.imshow("original",girl)#显示Lena和girl图片 cv2.waitKey(0) cv2.destroyAllWindows()
运行结果如下:
4. 总结
本文介绍本文介绍基于python的opencv图像预处理基本操作,主要内容包括图像读显存操作、 图像属性、图像ROI,很高兴能和大家分享!🤣🤣🤣希望你能有所收获。