随笔
理论 【1】说明
image.shape释义;获取图像的属性(信息);图像的属性包括:行,列,通道,图像数据类型,像素数目等;正文A
在图像处理中,image.shape表示图像的尺寸和通道数;对于彩色图像,通常有三个通道(红、绿、蓝);而灰度图像只有一个通道。正文B
image.shape返回一个表示图像形状的元组;具体的含义是 (height, width, channels);height表示图像的高度(垂直方向上的像素数);width表示图像的宽度(水平方向上的像素数);channels表示图像的通道数,对于彩色图像通常是3(红、绿、蓝),对于灰度图像是1;正文C
举例,image.shape[2]表示图像的通道数,对于彩色图像来说,它应该是 3;这个信息在处理图像时很重要,因为它帮助我们正确地解释和处理图像的各个通道。正文D
img.shape[:2]表示取彩色图片的长、宽;img.shape[:3]则取彩色图片的长、宽、通道;正文E
关于img.shape[0]、[1]、[2];img.shape[0]:图像的垂直尺寸(高度);img.shape[1]:图像的水平尺寸(宽度);img.shape[2]:图像的通道数;在矩阵中,[0]就表示行数,[1]则表示列数。 实操 【1】说明
图片的加载、显示和保存;代码
import cv2img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")# 参数-1为按原通道读入,不写的话默认读入三通道图片,例如(112,112,3)print(img.shape) # 读入的时图片的高度heightprint(img.shape[0]) # 读入的时图片的宽度weightprint(img.shape[1])结果
(607, 1382, 3)6071382 【2】代码
import cv2# 读取图片img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")# 读取图片(仅读取灰色)imgGrey = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg", 0)# 展示图片cv2.imshow("img", img)# 展示图片cv2.imshow("imgGrey", imgGrey)# 等待图片的关闭cv2.waitKey()# 写出图片cv2.imwrite(r"C:\Users\SUNxRUN\Desktop\Demo_1.jpg", imgGrey)疑问
imshow的两个参数作用是什么? 【3】说明
图像显示窗口的创建与销毁;代码
import cv2img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")# 创建一个窗口cv2.namedWindow("img", cv2.WINDOW_AUTOSIZE)cv2.imshow("img", img)cv2.waitKey()# 销毁任何建立的窗口cv2.destroyAllWindows()注释
cv2.namedWindow(窗口名,属性)- 属性:指定窗口大小模式;>>> `cv2.WINDOW_AUTOSIZE`:根据图像大小自动创建大小;>>> `cv2.WINDOW_NORMAL`:窗口大小可调整; 【4】说明
图片宽、高、通道数获取;代码
import cv2img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")imgGrey = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg", 0)sp1 = img.shapesp2 = imgGrey.shapeprint(sp1)print(sp2)结果
(800, 800, 3)(800, 800) 【5】说明
图像像素数目和图像数据类型的获取;代码
import cv2img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")imgSize = img.sizeprint(imgSize)ty = img.dtypeprint(ty)结果
1920000uint8解释
图像矩阵img的size属性和dtype属性分别对应图像的像素总数目和图像数据类型;一般情况下,图像的数据类型是uint8; 【6】说明
获取和修改图片中某点的像素值;代码
import cv2# 读取图像(使用cv2读进来是一个`numpy`矩阵,像素值介于0~255)img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")# 读取像素点px = img[100, 100]print(px, " ", type(px))# 修改像素img[100, 100] = [0, 0, 0]print(img[100, 100])结果
[96 75 67] <class 'numpy.ndarray'>[0 0 0]说明
访问和操作图像像素;代码
说明
生成指定大小的空图像;代码