使用NumPy填充图像将其全部返回黑色

问题描述 投票:0回答:1

我使用NumPy在边框上创建一个新的2D数组,其中包含原始图像的数组。我打印新阵列,这是我所期望的。但是当我绘制它时,它全是黑色的。

我试过for-loop和NumPy,这没用。

import cv2
import numpy as np

path = 'test.jpg'
img = cv2.imread(path,0)

print(img)
height,width = img.shape       # 440 * 455

new_arr = np.zeros((height+2,width+2), dtype = int)

#for i in range(height):
#   for j in range(width):
#      new_arr[i+1][j+1] = img[i][j]

new_arr[1:height+1,1:width+1] = img
print(new_arr)


cv2.imshow('new image',new_arr)
cv2.waitKey(0)
cv2.destroyAllWindows()

原始图片在这里:

我期望一个带黑色边框的图像(只有1个像素),内部是原始图像进行中值滤波,但实际输出是黑色图像。

python numpy opencv image-processing
1个回答
2
投票

不知道你是如何获得黑色图像,因为你的代码应该抛出错误。您需要在适当的命名空间(dtype)中设置np.值,值应为uint8

import cv2
import numpy as np

path = 'test.png'
img = cv2.imread(path,0)

height,width = img.shape

new_arr = np.zeros((height+2,width+2), dtype = np.uint8)

new_arr[1:height+1,1:width+1] = img
print(new_arr)

cv2.imshow('new image',new_arr)
cv2.waitKey(0)
cv2.destroyAllWindows()

请注意,您提供的图像是png,而不是jpg。在该图像上测试代码。

© www.soinside.com 2019 - 2024. All rights reserved.