机器学习爱好者OpenCvOpenCV

Opencv图像读取,显示,保存,类型转换

2019-07-07  本文已影响2人  陨星落云

图像基本操作

环境配置地址:

图像基本知识

采样.jpg 图量化矩阵.jpg

数字图像的视觉质量参数

图像读取,显示,保存,类型转换

  1. 读取图片
    在OpenCV中使用cv2.imread()函数来加载图片,该函数的形式如下:
cv2.imread(path, flags)

参数意义如下:

如果给定的图片路径不对,该函数不会抛出异常,而是返回一个None,如果给定正确的图片路径,将返回一个[height, width, channel]的numpy.ndarray对象,height表示图片高度,width表示图片宽度,channel表示图片的通道。

import cv2
img = cv2.imread("lena.jpg")
# img = cv2.imread("lena.jpg", cv2.IMREAD_COLOR)
# img = cv2.imread("lena.jpg", cv2.IMREAD_GRAYSCALE)
# img = cv2.imread("lena.jpg", cv2.IMREAD_UNCHANGED)

cv2.imshow("image", img) # 显示图片,后面会讲解
cv2.waitKey(0) #等待按键
lena.jpg
  1. 显示图片
    使用cv2.imshow()函数在一个窗口中显示图片,这个窗口自适应图片的大小,其形式如下:
cv2.imshow(winname, mat)

参数意义如下:

在图片显示的过程中,通常会伴随几个其他的函数,他们分别是:

cv2.destroyAllWindows()用来销毁所有已经创建的窗口, 如果需要销毁指定窗口使用cv2.destroyWindow()函数,他接受一个表示窗口名字的名字。

在这里我们直接用cv2.imshow()创建的窗口是自动适应图片大小的,不能缩放,如果我们想放大缩小窗口,必须单独用cv2.namedWindow(),并通过flag参数指定窗口模式为cv2.WINDOW_NORMAL,默认为cv2.WINDOW_AUTOSIZE.

下面是一个窗口可以放大缩小的显示图片的例子:

import cv2

img = cv2.imread('attractive-beautiful-beauty-2267088.jpg')
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
缩放显示图像.jpg
  1. 保存图片
    使用cv2.imwrite()函数来保存图片,形式如下:
cv2.imwrite(filename, img)

参数意义如下:

完整的例子:

import cv2

img = cv2.imread('lena.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:         # 按下esc时,退出
    cv2.destroyAllWindows()
elif k == ord('s'): # 按下s键时保存并退出
    cv2.imwrite('lena001.png',img)
    cv2.destroyAllWindows()
lena001.png

4.图像属性

图像的属性包括:行,列,通道,图像数据类型,像素数目等

在opencv中,图像不是传统的RGB颜色通道,而是按BGR顺序存储的。

img_BGR = cv2.imread('citrus-fruit-colorful-delicious-2146386.jpg') 
print(type(img_BGR)) # numpy.ndarray类型可以用numpy对图像进行各种操作
print(img_BGR.dtype) # 图像数据类型,一张图片的像素值范围是[0,255], 因此默认类型是unit8
print(img_BGR.shape[0]) # 行
print(img_BGR.shape[1]) # 列
print(img_BGR.shape[2]) # 通道
print(img_BGR.size) # 像素数目
print(img_BGR.max()) # 最大像素值
print(img_BGR.min()) # 最小像素值
print(img_BGR.mean()) #素值平均值
<class 'numpy.ndarray'>
uint8
4864
3648
3
53231616
255
0
211.1315848273327

5.转换函数

使用cv2.cvtColor()函数来转换图片颜色空间,形式如下:

cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 将BGR图像转换为灰度图像

其中最常用的还有:

例子:lena 真彩色图像转为灰度图像

import cv2

img = cv2.imread('lena.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imwrite('gray_lena.jpg',gray)
gray_lena.jpg

例子:颜色转换

import cv2

img_BGR = cv2.imread('citrus-fruit-colorful-delicious-2146386.jpg') 
cv2.imwrite('img_BGR.jpg',img_BGR)

img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB)
cv2.imwrite('img_RGB.jpg',img_RGB)

img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY)
cv2.imwrite('img_GRAY.jpg',img_GRAY)

img_HSV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HSV)
cv2.imwrite('img_HSV.jpg',img_HSV)

img_YcrCb = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YCrCb)
cv2.imwrite('img_YcrCb.jpg',img_YcrCb)

img_HLS = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HLS)
cv2.imwrite('img_HLS.jpg',img_HLS)

img_XYZ = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2XYZ)
cv2.imwrite('img_XYZ.jpg',img_XYZ)

img_LAB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2LAB)
cv2.imwrite('img_LAB.jpg',img_LAB)

img_YUV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YUV)
cv2.imwrite('img_YUV.jpg',img_YUV)

绘图3.jpg.jpeg

参考资料:
网址:https://www.aiuai.cn/aifarm365.html
书籍:《数字图像处理》《OpenCV-Python 中文教程》

上一篇下一篇

猜你喜欢

热点阅读