【1】引言
前序学习了图像的基本读取,掌握了imread()、imshow()和imwrite()函数的基本功能和使用技巧,参考文章链接为:
然后陆续掌握了彩色图像保存、图像放大和缩小以及对imshow()函数的大胆尝试技巧,相关文章见下述链接:
python学opencv|读取图像(二)保存彩色图像_python opencv 读取图像转为彩色-CSDN博客
python学opencv|读取图像(三)放大和缩小图像_python cv 调整图像大小-CSDN博客
python学opencv|读取图像(四)imshow()函数尝试-CSDN博客
在此基础上,我们对图片大小、像素、灰度等基本概念具备了一定了解,今天就来读取一下以进行深度学习。
【2】读取像素
图像具有一些基本属性,像素是其中之一。像素属性包括垂直和水平方向上的像素大小、像素总个数等基本类型。
读取图像的像素属性,应分别调用下述函数实现目标:
【a】shape函数读取垂直和水平方向上的像素大小;
【b】size函数读取总像素个数;
【c】dtype函数读取图像的数据类型(不是本次重点,之后再细究)。
以下图为例,图片截自CSDN页面,我们先将其读取,然后转化为灰度图,再输出像素属性。
++图1++
【2.1】读和显示图片
图片放置在project所在的位置,读取图片的程序为:
python
import cv2 as cv #引入cv2模块
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
cv.imshow('cvtest',image) #显示为灰度图
cv.waitKey() #图片显示时间
cv.destroyAllWindows() #释放所有窗口
在imread(photoname,colorpar)函数中,photoname代表要读取的图片的名字,colorpar=0时就会输出灰度图片,细节如下:
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
上述代码还可以优化一下,万一图片位置放错了,可能读不到,所以就需要给假设条件,把代码写为新形式:
python
import cv2 as cv #引入cv2模块
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
if image is not None: #成功读取图片
cv.imshow('cvtest', image) # 显示为灰度图
cv.waitKey() # 图片显示时间
cv.destroyAllWindows() # 释放所有窗口
else: #未找到图片
print("Error: 图片无法加载")
2.1节内部的两个程序,在图片位置正确的前提下,输出都是一张灰度图,参考图2。
【2.3】保存灰度图片
在上述基础上,增加一行保存图片代码:
cv.imwrite('opencv-gray.jpg', image) #保存灰度图
增加后的完整代码为:
python
import cv2 as cv #引入cv2模块
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
if image is not None: #成功读取图片
cv.imshow('cvtest', image) # 显示为灰度图
cv.imwrite('opencv-gray.jpg', image) #保存灰度图
cv.waitKey() # 图片显示时间
cv.destroyAllWindows() # 释放所有窗口
else: #未找到图片
print("Error: 图片无法加载")
运行代码后的输出图像为:
++图2++
【2.2】读取像素属性
在上述基础上,增加代码以读取像素属性:
shape= image.shape size = image.size dtype= image.dtype print('像素大小shape=',shape) print('总像素个数size=',size) print('图像数据类型dtype=',dtype)
此时的输出会增加下述内容:
++图3++
此时的完整代码为:
python
import cv2 as cv #引入cv2模块
image=cv.imread("cv019.png",0) #读取图片,将其转化为灰度图
if image is not None: #成功读取图片
cv.imshow('cvtest', image) # 显示为灰度图
cv.imwrite('opencv-gray.jpg', image) #保存灰度图
shape= image.shape
size = image.size
dtype= image.dtype
print('像素大小shape=',shape)
print('总像素个数size=',size)
print('图像数据类型dtype=',dtype)
cv.waitKey() # 图片显示时间
cv.destroyAllWindows() # 释放所有窗口
else: #未找到图片
print("Error: 图片无法加载")
【3】总结
成功掌握灰度图像像素读取技巧。