use*_*609 1 opencv image-processing computer-vision scikit-image
在读取PNG图像文件时,我同时使用opencv和skimage和来测试输入过程,发现输入图像的形状不同。是什么原因导致这些差异,为什么要skimage为PNG文件生成四个通道?
这是代码段
from skimage.io import imread
image = imread("C:\\Desktop\\test1.png")
import cv2
img = cv2.imread("C:\\Desktop\\test1.png")
print("skimage shape: ",image.shape)
print("cv2 shape: ",img.shape)
Run Code Online (Sandbox Code Playgroud)
输出是
skimage shape: (247, 497, 4)
cv2 shape: (247, 497, 3)
Run Code Online (Sandbox Code Playgroud)
OpenCV imread()默认会丢弃alpha通道(BGRA中的第4个通道)。如果要保留它,则需要使用IMREAD_UNCHANGED标志:
IMREAD_UNCHANGED Python:cv.IMREAD_UNCHANGED
如果设置,则按原样返回加载的图像(使用Alpha通道,否则将被裁剪)。
skimageimread()没有此行为。包含Alpha通道(如果存在):
在第三维度中存储不同的色带/通道,使得灰度图像为MxN,RGB图像MxNx3和RGBA图像MxNx4。
如注释中所述,在默认选项下,OpenCV imread()总是返回3个具有BGR颜色顺序的通道图像(请参阅参考资料IMREAD_COLOR)。skimage imread()对彩色图像使用RGB(A)顺序,并且可以为灰度图像返回单通道ndarray。