gpt4 book ai didi

python - 有没有办法使用OpenCV和Python返回图像中不同颜色的像素数量的值

转载 作者:行者123 更新时间:2023-12-02 17:26:41 27 4
gpt4 key购买 nike

我对使用OpenCV刚起步,想知道是否有一种方法可以返回图像中像素数的值。例如,返回图片中的红色,蓝色,绿色等的数量,然后指定最常见的颜色(像素数最多的颜色)。就像我说的那样,我对使用OpenCV还是很陌生,所以对如何开始编写它一无所知。如果在OpenCV库中已经可以做到这一点,那么有人可以告诉我要调用的函数。因为我要在相机上使用它来收集图像,所以您可以使用任何想要的图像。

最佳答案

我将尝试专门回答您的问题,但很重要,要知道OpenCV非常依赖NumPy数组体系结构。请询问以下代码中是否有不清楚之处,涉及我们如何使用NumPy数组处理图像和像素值。

假设您使用OpenCV阅读图片:

import cv2
import numpy as np

# reading the picture in coloured mode
image = cv2.imread("path/to/picture.jpg", cv2.IMREAD_COLOR)

现在,请注意 OpenCV使用BGR格式而不是RGB ,这意味着图像中的每个像素将由具有三个值的NumPy数组表示,每个值分别以蓝色,绿色和红色的顺序表示像素强度值。

因此,如果您想知道 ,哪种颜色以BGR(红色,蓝色和绿色)格式出现在该图片中,您可以执行以下操作:
# first, count all occurrences of unique colours in your picture
unique, counts = np.unique(image.reshape(-1, image.shape[2]), axis=0, return_counts=True)

# then, return the colour that appears the most
print(max(zip(unique, counts), key=lambda x: x[1]))

如果您想做的是 ,知道图片中还有更多的蓝色,绿色或红色(说实话,这没什么意义),那么您可以执行以下操作:
# count the raw pixel values for red, blue and green over all pixels in the image
counts = np.sum(image.reshape(-1, image.shape[2]), axis=0)

# remember that OpenCV uses BGR format and not RGB
BGR = ["blue", "green", "red"]

# then, for instance, return the amount of blue, green and red in a percentage format:
for colour, count in zip(BGR, counts):
print(colour+":", "{0:.2%}".format(count/np.sum(counts)))

同样,请询问是否不清楚!

关于python - 有没有办法使用OpenCV和Python返回图像中不同颜色的像素数量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58954459/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com