gpt4 book ai didi

python-3.x - 在 Python3.7.1 中使用 cv2.imread 形式的 Opencv3 读取 png 图像,并且在黑色窗口中根本没有像素

转载 作者:行者123 更新时间:2023-12-04 01:21:40 24 4
gpt4 key购买 nike

我有两个 png 图像,一个 由 python 库 pillow 输出为 png,从 svg 字体图像转换而来,另一个 是由读取并重新保存的windows 10 的 png 画图程序。

奇怪的是,我使用 opencv3 cv2.imread 函数来读取这些图像,one 不行,只有黑色窗口,another 可以。

如何正确读取这些 png?

代码:

import cv2

image_file_path = r""
image = cv2.imread(image_file_path, cv2.IMREAD_ANYDEPTH)

if(! os.path.exists(image_file_path)):
print('NOT EXIST! = ' + image_file_path)

cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow("image", image)
cv2.waitKey()

图像:

好的: enter image description here

不正常: enter image description here

最佳答案

第一张图片是 4 channel RGBA 格式,具有完全无意义、完全不透明的 alpha channel ,您可以忽略它。

第二张图片是双 channel 灰色+Alpha 格式,其中所有像素都是纯黑色,形状仅在 Alpha channel 中定义。

所以,基本上你想要:

  • 丢弃第一个图像的最后一个 channel ,您可以使用 cv2.IMREAD_COLOR

  • 丢弃除第二张图像的最后一个 channel 之外的所有 channel ,您可以这样做:

    im = cv2.imread('2.png',cv2.IMREAD_UNCHANGED)[:,:,-1]


我通过使用 ImageMagick 获得了上述信息,它包含在大多数 Linux 发行版中并且在 macOS 和 Windows 上可用。

我在终端中使用的命令是:

magick identify -verbose 2.png

示例输出

Image: 2.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 1040x1533+0+0
Units: Undefined
Colorspace: Gray
Type: Bilevel
Base type: Undefined
Endianess: Undefined
Depth: 8-bit
Channel depth:
Gray: 1-bit <--- Note 1
Alpha: 8-bit <--- Note 1
Channel statistics:
Pixels: 1594320
Gray:
min: 0 (0) <--- Note 2
max: 0 (0) <--- Note 2
mean: 0 (0)
standard deviation: 0 (0)
kurtosis: -3
skewness: 0
entropy: 4.82164e-05
Alpha:
min: 0 (0) <--- Note 3
max: 255 (1) <--- Note 3
mean: 50.3212 (0.197338)
standard deviation: 101.351 (0.397456)
kurtosis: 0.316613
skewness: 1.52096
entropy: 0.0954769
...
...

我在右上方用箭头和注释做了注释。

注意 1:这告诉我图像是灰度 + alpha

注意 2:这告诉我所有的灰度像素都是黑色的,因为最大值为零,最小值也为零

注3:这告诉我有一些完全透明的像素,还有一些完全不透明的像素

关于python-3.x - 在 Python3.7.1 中使用 cv2.imread 形式的 Opencv3 读取 png 图像,并且在黑色窗口中根本没有像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com