在Android中使用openCV检测特定颜色的区域

时间:2013-09-05 14:34:41

标签: android opencv colors bitmap extract

我使用android的相机功能并以位图的形式捕获图像。我尝试使用以下方法从捕获的图像中提取某种颜色的区域(红色,粉红色,蓝色,黄色)但是没有成功:

for(int i=0;i<bitmap.getWidth();i++){
for(int j=0;j<bitmap.getHeigth();j++){
    int pixel = bitmap.getPixel(i,j);
    if(pixel == Color.RED){
        //create new image
    }
}
 }

我知道openCV可以用在这件事上。如果有人能告诉我的方式,我将非常感激。

2 个答案:

答案 0 :(得分:1)

我认为,这个任务可以用一些blob库解决,例如cvBlob还有Android版cvBlobAndroid

当您尝试从头开始时,最好将图像转换为更方便的色彩空间,例如HSV,CIELab等

此外,请勿在条件(A==colorValue)中使用精确的颜色分量值比较,而是使用值范围比较(A>minColorValue && A<maxColorValue)

答案 1 :(得分:1)

要检测特定颜色的区域,您应该使用opencv的Core.inRange函数。

您可以在此处查看代码示例:ANDROID - color detection using openCV - how to?