随笔
说明
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]
则表示列数。说明
代码
import cv2
img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")
# 参数-1为按原通道读入,不写的话默认读入三通道图片,例如(112,112,3)
print(img.shape)
# 读入的时图片的高度height
print(img.shape[0])
# 读入的时图片的宽度weight
print(img.shape[1])
结果
(607, 1382, 3)
607
1382
代码
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
的两个参数作用是什么?说明
代码
import cv2
img = 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`:窗口大小可调整;
说明
代码
import cv2
img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")
imgGrey = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg", 0)
sp1 = img.shape
sp2 = imgGrey.shape
print(sp1)
print(sp2)
结果
(800, 800, 3)
(800, 800)
说明
代码
import cv2
img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")
imgSize = img.size
print(imgSize)
ty = img.dtype
print(ty)
结果
1920000
uint8
解释
img
的size
属性和dtype
属性分别对应图像的像素总数目和图像数据类型;uint8
;说明
代码
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]
[0 0 0]
说明
代码
说明
代码