【问题标题】:How to reshape png image read by skimage.imread如何重塑 skimage.imread 读取的 png 图像
【发布时间】:2019-09-01 17:25:06
【问题描述】:

然后我读了一些jpg文件,这样

image = imread('aa.jpg')

结果我得到了数字从 1 到 255 的数据框

我可以这样调整它的大小:

from cv2 import resize
image = resize(image, (256, 256)

但后来我对 png 做同样的想法,结果不理想。

image = imread('aa2.png')  # array with number within 0-1 range
resize(image, (256,256)) # returns 1 channel image
resize(image, (256,256, 3))   # returns 3 channel image

奇怪的图像

但是imshow(image)

【问题讨论】:

  • 您正在寻找skimage.transform.resizeskimage.transform.rescale
  • 请包含您的import 语句,以便清楚您正在使用哪些模块,并且您的示例是最小且完整的。还请附上您的aa.png 图片。谢谢。

标签: python image png scikit-image cv2


【解决方案1】:

cv2.imread 默认读取 3 通道而不是 4 通道的图像。传递参数 cv.IMREAD_UNCHANGED 以读取您的 PNG 文件,然后尝试调整其大小,如下面的代码所示。

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread('Snip20190412_12.png', cv.IMREAD_UNCHANGED)
print(img.shape) #(215, 215, 4)

height, width = img.shape[:2]
res = cv.resize(img,(2*width, 2*height))
print(res.shape)#(430, 430, 4)
plt.imshow(res)

【讨论】:

    【解决方案2】:

    我猜你的图片或代码有问题。

    这里有一张免费图片可以尝试:https://pixabay.com/vectors/copyright-free-creative-commons-98566/

    也许您对 libpng 有疑问,请查看以下答案:libpng warning: iCCP: known incorrect sRGB profile

    检查这个适用于 PNG 图像的简单代码。

         import cv2 as cv
         image = cv.imread("foto.png")
         if __name__ == "__main__":
              while True:
                    image = cv.resize(image,(200,200))
                    cv.imshow("prueba",image)
    
                    key = cv.waitKey(10)
                    if key == 27:
                        cv.destroyAllWindows()
                        break   
    
         cv.destroyAllWindows()
    

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 2014-07-27
      • 2012-01-11
      • 2011-02-10
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多