【发布时间】:2023-03-06 22:07:01
【问题描述】:
我想从 RGB 中检测哪个值最大。我怎么能检测到呢? 我想显示哪种颜色的出现率最高 RGB 值。例如,在图像中,红色的出现频率最高,因此它将颜色显示为 RED,并以百分比形式显示其值。
我已经尝试过获取如下图像的行和列:
public Mat onCameraFrame(CvCameraViewFrame cvf) {
mRgba = cvf.rgba();
int rows = mRgba.rows();
int cols = mRgba.cols();
// int ch = mRgba.channels();
double R=0,G=0,B=0;
for (int i=0; i<rows; i++)
{
for (int j=0; j<cols; j++)
{
double[] data = mRgba.get(i, j); //Stores element in an array
R = data[0];
G= data[1];
B = data[2];
}
}
Imgproc.putText(mRgba,"R:"+R + "G:"+G +"B:"+B,new Point(10,52),Core.FONT_HERSHEY_COMPLEX,.7,new Scalar(5,255,255), 2,8,false );
return mRgba;
}
但是因为我在onCameraFrame 中实现了代码,所以需要很多时间并且屏幕滞后。那么我怎样才能在这种方法中快速检测到它,哪种方法是最好的呢?
谢谢。
【问题讨论】:
-
如果你想命名你应该使用 HSV 颜色空间的颜色
-
是的,我想要颜色名称和百分比。你能回答我这个问题吗?对你的一个巨大要求。谢谢