我正在使用 opencv,并且可以通过下面的代码获取图像的像素——一个 3 维元组。但是,我不太确定如何计算图像中像素值的模式。
import cv2
import numpy as np
import matplotlib.pyplot as plt
import numpy as np
import cv2
img =cv2.imread('C:\\Users\Moondra\ABEO.png')
#px = img[100,100] #gets pixel value
#print (px)
我试过,
from scipy import stats
stats.mode(img)[0]
但这会返回一个数组形状
stats.mode(img)[0].shape
(1, 800, 3)
不确定具体如何stats
正在计算选择模式的维度,但我正在寻找每个像素值(3维元组)作为一个元素。
编辑:
为了清楚起见,我将准确地列出我正在寻找的内容。
假设我们有一个形状为 (3,5,3) 的数组,如下所示
array([[[1, 1, 2], #[1,1,2] = represents the RGB values
[2, 2, 2],
[1, 2, 2],
[2, 1, 1],
[1, 2, 2]],
[[1, 2, 2],
[2, 2, 2],
[2, 2, 2],
[1, 2, 2],
[1, 2, 1]],
[[2, 2, 1],
[2, 2, 1],
[1, 1, 2],
[2, 1, 2],
[1, 1, 2]]])
然后我会将其转换为一个看起来像这样的数组,以便于计算
把这个变成
array([[1, 1, 2],
[2, 2, 2],
[1, 2, 2],
[2, 1, 1],
[1, 2, 2],
[1, 2, 2],
[2, 2, 2],
[2, 2, 2],
[1, 2, 2],
[1, 2, 1],
[2, 2, 1],
[2, 2, 1],
[1, 1, 2],
[2, 1, 2],
[1, 1, 2]])
which is of shape(15,3)
我想通过计算每组 RGB 来计算模式,如下所示:
[1,1,2] = 3
[2,2,2] = 4
[1,2,2] = 4
[2,1,1] = 2
[1,1,2] =1
谢谢。