图像的读取、显示和保存
1. 读取图像
import cv2 as cv
img = cv.imread("IMG_2022.JPG")
print(img)
2. 显示图像
import cv2 as cv
img = cv.imread("IMG_2022.JPG")
cv.namedWindow("image") # 创建一个image的窗口
cv.imshow("image", img) # 显示图像
cv.waitKey(0) # 当该值为负数或0时表示无限等待,默认值为0。
cv.destroyAllWindows() # 释放窗口
3. 保存图像
import cv2 as cv
img = cv.imread("img1.jpg")
cv.imwrite('./img/img1.jpg', img) # 需要新建文件夹
图像通道的基本操作
在图像处理过程中,有时会根据需要对通道进行拆分与合并。在OpenCV中提供了split()和merge()函数对图像进行拆分与合并。
1. split()拆分函数
函数split()可以拆分图像的通道,例如BGR图像的三个通道。其一般格式如下:
b, g, r = cv2.split(img)
- b、g、r分别是B通道、G通道、R通道的图像信息。
- img是要拆分的图像。
import cv2 as cv
img = cv.imread("img1.jpg")
b, g, r = cv.split(img) # 拆分图像通道为b、g、r三个通道
cv.imshow("b", b)
cv.imshow("g", g)
cv.imshow("r", r)
cv.imshow("image", img)
cv.waitKey(0)
cv.destoryAllWindows()
2. merge()合并函数
通道合并是通道拆分的逆过程,可以将三个通道的灰度图像合并为一张彩色图像。OpenCV中提供了merge()函数来实现图像通道的合并,其基本格式为:
img = cv2.merge([b, g, r])
- img是合并后的图像。
- b、g、r分别是B通道、G通道、R通道的图像信息。
import cv2 as cv
img = cv.imread("img1.jpg")
b, g, r = cv.split(img)
imgagebgr = cv.merge([b, g, r])
cv.imshow("img", img)
cv.imshow("imgagebgr", imgagebgr)
cv.waitKey()
cv.destroyAllWindows()
图像属性的获取
在进行图像处理时经常需要获取图像的大小、类型等属性信息。下面介绍几个常用属性。
- shape:表示图像的大小。如果是彩色图像,则返回包含行数、列数和通道数的数组;如果是二值图像或灰度图像,则返回包含行数和列数的数组。
- size:表示返回的图像的像素数目。
- dtype:表示返回的图像的数据类型。
import cv2 as cv
img = cv.imread("img1.jpg")
print("img.shape", img.shape) # 输出图像的大小属性
print("img.size", img.size) # 输出图像的像素数目属性
print("img.dtype", img.dtype) # 输出图像的类型属性