python使用opencv获取图像尺寸(高宽深)
import cv2 as cv img = cv.imread("D:\\test.jpg") size = img.shape
h = size[0] #高度
w = size[1] #宽度
chan = size[2] #通道数
img.size #像素数目
print(size)
结果
(512,512,2)
imread返回的是numpy.ndarray对象,[高,宽,通道数]
cv2.imshow(winname,mat)
cv.imshow("name",mat)
mat是一个图片矩阵,numpy.ndarry类型
加上下面一句,让图像持续显示,0表示显示无限长时间
cv.waitKey(0)
用cv2.imwrite()保存图片
cv.imwrite("name",img)
使用cv2.cvtColor()函数来转换图片颜色空间
cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 将BGR图像转换为灰度图像
- cv2.COLOR_BGR2RGB # 将BGR图像转换为RGB图像
- cv2.COLOR_BGR2GRAY # 将BGR图像转换为灰度图像
- cv2.COLOR_GRAY2BGR # 将灰度图像转换为BGR图像
彩色图片转灰度图可以直接读取灰度
import cv2 as cv img = cv.imread('lbxx.jpg',0) #直接以灰度图片读取 img_1 = cv.imread('lbxx.jpg',cv.IMREAD_GRAYSCALE)
numpy使用astype转化数据类型,float默认转化为64位,可以使用np.float32
指定为32位
#numpy转化float类型 a= np.array([1,2,3]) a = a.astype(np.float) print(a) print(a.dtype)
为了方便进行卷积,需要将opencv导入的numpy变成张量,然后再将tensor类型转换为32位浮点型
img_t = img_t.type(torch.float32)#将tensor类型转为float32
img_t = img_t.float() #也可以转为float32
matplotlib显示图像
plt.figure(figsize = (12,6)) plt.subplot(1,2,1) plt.imshow(imconv2dout_im[0],plt.cm.gray) plt.axis("off") plt.subplot(1,2,2) plt.imshow(imconv2dout_im[1],plt.cm.gray) plt.axis("off") plt.show()
- Figure
fig = plt.figure()
: 可以解释为画布。 - 画图的第一件事,就是创建一个画布figure,然后在这个画布上加各种元素。
- Axes
ax = fig.add_subplot(1,1,1)
: 不想定义,没法定义,就叫他axes! - 首先,这个不是你画图的xy坐标抽!
- 希望当初写这个lib的时候他们用一个更好的名字。。。
- 可以把axes理解为你要放到画布上的各个物体。比如你要画一个太阳,一个房子,一个车在画布上,那么太阳是一个axes,房子是一个axes,etc。
- 如果你的figure只有一张图,那么你只有一个axes。如果你的figure有subplot,那么每一个subplot就是一个axes
- axes是matlibplot的宇宙中心!axes下可以修改编辑的变量非常多,基本上能包含你的所有需求。
- Axis
ax.xaxis/ax.yaxis
: 对,这才是你的xy坐标轴。 - 每个坐标轴实际上也是由竖线和数字组成的,每一个竖线其实也是一个axis的subplot,因此
ax.xaxis也存在axes
这个对象。对这个axes进行编辑就会修改xaxis图像上的表现。
opencv图像通道的拆分
cv2.split()将三通道的BGR彩色图像分离成B\G\R单通道图像
使用NumPy切片分离通道更简单
# 1.6 图像的显示(cv2.imshow) imgFile = "../images/imgLena.tif" # 读取文件的路径 img1 = cv2.imread(imgFile, flags=1) # flags=1 读取彩色图像(BGR) img2 = cv2.imread(imgFile, flags=0) # flags=0 读取为灰度图像 cv2.imshow("Demo1", img1) # 在窗口 "Demo1" 显示图像 img1 cv2.imshow("Demo2", img2) # 在窗口 "Demo2" 显示图像 img2 key = cv2.waitKey(0) # 等待按键命令, 1000ms 后自动关闭
# 1.8 图像显示(多个图像组合显示) imgFile1 = "../images/imgLena.tif" # 读取文件的路径 img1 = cv2.imread(imgFile1, flags=1) # flags=1 读取彩色图像(BGR) imgFile2 = "../images/imgGaia.tif" # 读取文件的路径 img2 = cv2.imread(imgFile2, flags=1) # # flags=1 读取彩色图像(BGR) imgStack = np.hstack((img1, img2)) # 相同大小图像水平拼接 cv2.imshow("Demo4", imgStack) # 在窗口 "Demo4" 显示图像 imgStack key = cv2.waitKey(0) # 等待按键命令, 1000ms 后自动关闭
标签:plt,img,axes,cv2,笔记,学习,图像,cv From: https://www.cnblogs.com/ChLi190429/p/17721695.html