0

我使用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可以用在这件事上。如果有人能告诉我方法,将不胜感激。

4

2 回答 2

1

我认为,这个任务可以用一些 blob 库来解决,例如cvBlob也有 android 版本cvBlobAndroid

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

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

于 2013-09-05T15:47:43.430 回答
1

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

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

于 2013-09-06T13:09:09.730 回答