Заполнение изображения NumPy возвращает все черное - PullRequest
0 голосов
/ 28 апреля 2019

Я использую NumPy для создания нового 2D-массива с 0 на границе и массива исходного изображения внутри.Я печатаю новый массив, это то, что я ожидаю.Но когда я заговариваю, все становится черным.

Я пробовал 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()

Исходное изображение здесь:

original image

Я ожидаюизображение с черной рамкой (всего 1 пиксель), а внутри - исходное изображение для медианной фильтрации, но на самом деле получается черное изображение.

1 Ответ

2 голосов
/ 28 апреля 2019

Не уверен, как вы получаете черное изображение, так как ваш код должен выдать ошибку. Вам необходимо установить 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. Код протестирован на этом изображении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...