OpenCV读取图像后,按照BGR方式排列图像矩阵
PIL(python image library)库读取图像后,按照RGB方式排列图像矩阵
RGB:red, green, blue
1个彩色图像,可以分解为3个灰度图像,3个灰度图像合起来是一个彩色图像
imgArray = np.array(image) #将image转化为一个数组;# 效果:result.shape=[width,height,channels通道:rgb 0,1,2] imgArray.shape b = imgArray[:,:,0] #提取红色通道
将彩色image(3个)一个通道的像素矩阵的像素值导出,得到一个新的矩阵
OpenCV读取cv2.imread()用于读取图片文件
imread函数有两个参数,参数1:是图片路径,参数2:表示读取图片的形式,有三种:
cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可以直接写1。
cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,0。
cv2.IMREAD_UNCHANGED:包括alpha(透明通道),-1。读取原图,原图是灰度图的话,读出来就是灰度,原图是彩色三通道的读出来就是三通道,原图是四通道的,读出来就是四通道的。
cv2.imread()读取图片后已多维数组的形式保存图片信息,前两维表示图片的像素坐标,最后一维表示图片的通道索引,具体图像的通道数由图片的格式来决定
(1500,700,4)
import cv2 import numpy as np import matplotlib.pyplot as plt import pandas as pd import os from pathlib import P #读取image img_bgrm = cv2.imread(path+ '1.png', cv2.IMREAD_UNCHANGED) plt.show() img_bgrm.shape img_bgrm
# Save the transparency channel alpha # blue、green、red、alpha 4通道 b,g,r, alpha = cv2.split(img_bgrm) #转成只有0,255的黑白图,黑是0(array),白是255(有图的区域) alpha_mask = np.where(alpha==0,0,1) ##convert alpha to 0 and 255 only alpha2 = np.array(alpha_mask*255, dtype = "uint8") #画图 from PIL import Image import numpy as np import math img=Image.fromarray(alpha2) img
#canny(): 边缘检测
img1 = cv2.GaussianBlur(alpha2,(3,3),0)
edges = cv2.Canny(img1, threshold1=30, threshold2=100)
#画出检测出来的边图片
img=Image.fromarray(edges)
img
#保存image_edges
cv2.imwrite('1_new.png',edges)
插值
interp1d函数
'nearest’是最邻近插值(零阶), 'linear’线性插值; 'quadratic’平方插值(二元一次); 'cubic’立方插值(三元一次)



