Как проверить, имеет ли PNG определенный цвет RGB, используя Python? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть файл .png, и я хочу просмотреть изображение, чтобы проверить, есть ли в нем определенное значение RGB. Например, допустим, у меня есть изображение и я хочу проверить, находится ли значение RGB (255, 0, 0) где-то на изображении. Как бы я сделал это в Python? Спасибо!

Ответы [ 3 ]

1 голос
/ 01 апреля 2020

Я рекомендую вам использовать PIL-Getpixel или PIL-Getdata

from PIL import Image

im = Image.open('whatever.png').convert("RGB")

# get pixels
pixels = [im.getpixel((i, j)) for j in range(im.height) for i in range(im.width)]

# or
pixels = [i for i in im.getdata()]

#check if tuple of pixel value exists in array-pixel

print((255, 0, 0) in pixels) #True if exists, False if it doesn't
0 голосов
/ 01 апреля 2020

Это должно работать ..

import cv2
import numpy as np

img = cv2.imread(r'circle.png')
ind = np.where((img[:, :, 0]==255) & (img[:, :, 1]==0) & (img[:, :, 2]==0))
answer = list(zip(ind[0], ind[1]))
print(answer) # Prints row and column indices in tuples
0 голосов
/ 01 апреля 2020

Вы можете использовать пакет cv2 для загрузки изображения и numpy для поиска его в массиве:

import cv2
import numpy as np

img = cv2.imread('one.png')

pixel = img[801,600]

print (pixel) # pixel value i am searching for

def search_array():
    pixel_tile = np.tile(pixel, (*img.shape[:2], 1))
    diff = np.sum(np.abs(img - pixel_tile), axis=2)
    print("\n".join([f"SUCCESS - {idx}" for idx in np.argwhere(diff == 0)]))

if __name__ == "__main__":
    search_array()

Взято из моего ответа здесь .

...