Скопируйте черные пиксели с изображения и вставьте то же изображение со смещением - PullRequest
1 голос
/ 12 апреля 2020

enter image description here Я пытался заставить некоторые маскировки работать на моих фотографиях, но я думаю, должен быть более простой способ сделать это:

a) I иметь черно-белое изображение (фото), показывающее числа с дисплея, «test.png» (1000x300 px)

b) Я хочу скопировать (только) черные пиксели и вставить их в то же изображение

c) При вставке я хочу, чтобы вставка была смещена на свое «оригинальное» место на 20 пикселей (оба x / y)

Я пытаюсь запустить приведенный ниже код, но получаю ошибку:

import cv2
test = Image.open('test.png')
np = Image.new('1', (1000, 300), 255)
mask = np.bitwise_and(test, np.roll(test, 20, (0,1)))
mask.save('mask.png')

Я получаю AttributeError: у объекта 'Image' нет атрибута 'bitwise_and'

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Вы можете сделать это так:

from PIL import Image
import numpy as np

# Load image and make Numpy array
im = Image.open('image.png').convert('L')
na = np.array(im)

# Get x,y coordinates of black pixels
Y, X = np.where(na==0)

# Make pixels 30 across and 30 down from them black
na[Y+30, X+30] = 0

# Convert back to PIL Image and save
Image.fromarray(na).save('result.png')

enter image description here

0 голосов
/ 13 апреля 2020

Если изображение логическое (0/1), то:

res=np.bitwise_and(image, np.roll(image, 20, (0,1)))
...