如何重塑 skimage.imread 读取的 png 图像
How to reshape png image read by skimage.imread
然后我读了一些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)
我猜你的图像或代码有问题。
这里有一张免费图片供您试用: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()
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)
然后我读了一些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)
我猜你的图像或代码有问题。
这里有一张免费图片供您试用: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()
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)