我正在尝试使用 OpenCV 在 Android Studio 中制作一个应用程序,该应用程序基本上查看一组点的图像并提取所有亮点,然后对它们进行计数。点的形状不一致,但点的颜色应该是白色背景黑色。
我首先上传这样的图像:
然后我获取图像的位图并将其转换为灰度。然后我检查灰度值是否在 aa 范围内并返回二进制值的位图。返回的图像如下所示:
我已经失败尝试了几种不同的方法来计算这些点包括使用Imgproc.findContours和沿教程,例如以下这一个,但我不是在寻找一个特定的形状。它通常只是一次 1 到 50 个像素的分组,RGB 值分别为 225、255、255 和不规则形状。如何计算这些单独的形状?
这是我的代码的图像处理部分,countNonZero 部分只是让我知道有多少白色像素,对于这个特定的图像是 179
public void convertToGray(View v){
int whitePix;
Mat Rgba = new Mat();
Mat grayMat = new Mat();
Mat dots = new Mat();
BitmapFactory.Options o = new BitmapFactory.Options();
o.inDither=false;
o.inSampleSize=4;
int width = imageBitmap.getWidth();
int height = imageBitmap.getHeight();
grayBitmap = Bitmap.createBitmap(width,height,Bitmap.Config.RGB_565);
//bitmap to MAT
Utils.bitmapToMat(imageBitmap,Rgba);
Imgproc.cvtColor(Rgba,Rgba,Imgproc.COLOR_RGB2GRAY);
Core.inRange(Rgba,scalarLow,scalarHigh,grayMat);
whitePix = Core.countNonZero(grayMat);
Utils.matToBitmap(grayMat,grayBitmap);
MediaStore.Images.Media.insertImage(getApplicationContext().getContentResolver(), grayBitmap, "Result", "Descrip");
mImageView.setImageBitmap(grayBitmap);
}
在将图像上传到应用程序后单击按钮时会调用此函数。
拉丁的传说
GCT1015
相关分类