Python中 matplotlib和opencv读取图片返回通道不同的原因和解决方法
Python中 matplotlib和opencv读取图片返回通道不同的原因和解决方法
·
Python中 matplotlib和opencv读取图片返回的通道不同
使用双线性插值的方法初始化卷积层中卷积核的权重参数的时候,读取图片,发现报错:
RuntimeError: Given transposed=1, weight of size [3, 3, 4, 4],
expected input[1, 4, 900, 1600] to have 3 channels, but got 4 channels
instead
很奇怪,我的图像不是RGB3通道的吗
matplotlib和opencv读取不一致的图片 位深度32
matplotlib和opencv读取一致的图片 位深度24
最后看到一个博主的说明:
png图片比jpg多了一个Alpha通道, 一个RGB颜色模型的真彩图形,用由红、绿、蓝三个色彩信息通道合成的,每个通道用了8位色彩深度,共计24位,包含了所有彩色信息。为实现图形的透明效果,png图片采取在图形文件的处理与存储中附加上另一个8位信息的方法,这个附加的代表图形中各个素点透明度的通道信息就被叫做Alpha通道。
读取:
import cv2
import matplotlib.pyplot as plt
import numpy as np
# 32位深的图片 读取不一致
mat_img = plt.imread('2.png')
print(mat_img.shape)
cv2_img = cv2.imread('2.png')
print(cv2_img.shape)
print('===='*10)
cv2_img1 = cv2.imread('2.png', cv2.IMREAD_UNCHANGED) #读入完整图片,包括alpha通道,可用-1作为实参替代
print(cv2_img1.shape)
# 24位深的图片 读取一致
print('===='*10)
mat_img = plt.imread('1.jpg')
print(mat_img.shape)
cv2_img = cv2.imread('1.jpg')
print(cv2_img.shape)
输出:
(900, 1600, 4)
(900, 1600, 3)
========================================
(900, 1600, 4)
========================================
(240, 384, 3)
(240, 384, 3)

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)