OpenCV копирует список пикселей с одного изображения на другое - PullRequest
0 голосов
/ 23 октября 2018

Привет OpenCV или Numpy Gurus,

Исходя из моего предыдущего вопроса (/12421506/opencv-ili-numpy-effektivno-zamenit-spisok-pikselei-na-izobrazhenii)

У меня есть черное изображение, и я хочу заменить список пикселей (довольно большойlist) со списком значений пикселей.

Я могу скопировать один пиксельный цвет в изображение - благодаря помощи некоторых пользователей:

coords_list = ([3,5],[55,60],[25,90])
black_image =np.zeros((480,640,3))
I,J = np.transpose(top_pot_coords)
black_image[I,J] =  [255,255,255] 

Однако я не могу просто скопировать пиксельзначения в black_image (это не работает):

black_image[I,J] =  img[I,J]

Я надеюсь, что это простой вопрос для многих там. Я работал над этим в течение нескольких часов, и я 'Я действительно не в том месте, где я могу составить решение, хотя я учусь.

Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ:

ОК, это смущает -- не уверен, что я делал раньше, но в процессе написания минимального полного проверяемого примера я разработал минимальный, полный, проверяемый ответ. См. мой собственный ответ ниже.

1 Ответ

0 голосов
/ 23 октября 2018

ОК, это стыдно - не уверен, что я делал раньше, но в процессе написания минимально полного проверяемого примера я разработал минимальный, полный, проверяемый ответ.Итак, для тех, кому это может быть интересно ...

import cv2
import numpy as np
coords_list = np.array([[3,5],[40,25],[25,54]], dtype=np.uint8)
pixel_list =  np.array([[255,0,0],[0,255,0],[0,0,255]], dtype=np.uint8)
black_image =np.zeros((48,64,3))
cv2.imshow('black_image', black_image)
while (1):
    k = cv2.waitKey(0) #press esc to kill
    if (k == 27):
        break

cv2.destroyAllWindows()

I,J = np.transpose(coords_list)
black_image[I,J] =  [255,255,255]

cv2.imshow('black_image', black_image)
while (1):
    k = cv2.waitKey(0) #press esc to kill
    if (k == 27):
        break

cv2.destroyAllWindows()


black_image[I,J] =  pixel_list

cv2.imshow('black_image', black_image)
while (1):
    k = cv2.waitKey(0) #press esc to kill
    if (k == 27):
        break

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