【问题标题】:OpenCV shows wrong or modified result when load image加载图像时 OpenCV 显示错误或修改的结果
【发布时间】:2020-02-27 05:25:05
【问题描述】:

当我使用以下代码在 python 中使用 opencv 加载图像时,我有一个由 photoshop 制作的线图,结果 1 与实际图像不匹配,

import cv2
import numpy as np
im = cv2.imread('5.png')
cv2.imshow('image', im)
cv2.waitKey(0)

我将图像加载到任何图像查看器,它会在下面显示实际图像的样子。

【问题讨论】:

  • 可以附上5.png吗?
  • 透明度。请改用cv2.imread("5.png", cv2.IMREAD_UNCHANGED)
  • @learner 我之前试过但仍然给我相同的结果...没有变化..
  • 问题不在于cv2.imread,而在于cv2.imshowcv2.imread("5.png", cv2.IMREAD_UNCHANGED) 这提供了一个形状为 (1281, 1466, 4) 的数组,它指定有 4 个通道,第 4 个是透明度通道。虽然显示它,但它无法处理透明度

标签: python image opencv image-processing opencv-python


【解决方案1】:

PNG 支持 4 通道图像。图像 5.png 有 4 个通道,如 R G B 和 Alpha。 Alpha 通道是定义网页设计背景的透明度通道。无论如何,您只需要前 3 个通道 RGB。 下面的一个小脚本就可以了

import cv2

image = cv2.imread('5.png', cv2.IMREAD_UNCHANGED)    #this gives the 4 channel image

mask = image[:,:,3] == 0 #we find all the places where background is transperent

image[mask] = [255, 255, 255, 255]   #we replace that transperent background with white 
                                      #background

BGR = cv2.cvtColor(image, cv2.COLOR_BGRA2BGR)  #convert it to 3 channel

cv2.imshow('BGR',BGR)
cv2.waitKey(0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2016-11-26
    相关资源
    最近更新 更多