我正在使用opencv,我可以通过下面的代码获取图像的像素 - 一个三维元组。但是,我不太清楚如何计算图像中像素值的模式。如何找到图像像素值的模式(统计)?
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
的计算,从中选择模式的尺寸阵列状,但我m查找每个像素值(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
谢谢。
'stats.mode(IMG,轴= -1)[0]'? – Divakar
去测试一下。 – Moondra
用'axis = 0,1,2和-1'进行快速测试,仍然会产生一个大的数组。要重新测试。 – Moondra