首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python检查PNG是否有特定的RGB颜色?

问如何使用Python检查PNG是否有特定的RGB颜色?
EN

Stack Overflow用户
提问于 2020-04-01 00:53:23
回答 4查看 2.6K关注 0票数 0

我有一个.png文件,我想通过扫描图像来检查其中是否有某个RGB值。例如,假设我有一个图像,希望检查RGB值(255, 0, 0)是否在图像中的某个位置。我如何在Python中做到这一点?谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-04-01 01:16:16

我建议您使用皮尔-盖特皮恩或PIL-Getdata

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-04-01 01:39:51

这应该管用..。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2020-04-01 00:56:40

您可以使用cv2包加载图像,并使用numpy作为数组搜索图像:

代码语言:javascript
复制
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()

摘自我的回答,这里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60962082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档