基于python的opencv图像预处理(一)
本文介绍基于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.imshow("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,很高兴能和大家分享!🤣🤣🤣希望你能有所收获。
-
参考链接:
本文详细介绍了基于Python的OpenCV进行图像预处理的基本操作,包括图像的读取、显示、保存,以及图像属性如形状、大小和数据类型的获取。此外,还讲解了如何定义和使用ROI(感兴趣区域)。通过实例代码展示了如何应用这些操作,并提供了相应的图像处理结果。文章适合初学者入门OpenCV图像处理。

6537

被折叠的 条评论
为什么被折叠?



