Tôi đang phát triển một ứng dụng Android để tính tổng tất cả các điểm của các miếng domino đang được nhìn thấy - được hiển thị trong hình ảnh - sử dụng OpenCV cho Android.OpenCV: Phát hiện các đốm tròn/ổ đĩa Domino
Vấn đề là, tôi không thể tìm thấy một cách để lọc đường nét khác và chỉ đếm chấm thấy tôi trong domino, tôi cố gắng sử dụng cạnh Canny tìm sau đó sử dụng HoughCircles, nhưng không có kết quả, như tôi không có một cái nhìn đầu tuyệt đối của đá và HoughCircles phát hiện vòng tròn hoàn hảo chỉ :)
đây là mã của tôi:
public Mat onCameraFrame(Mat inputFrame) {
inputFrame.copyTo(mRgba);
Mat grey = new Mat();
// Make it greyscale
Imgproc.cvtColor(mRgba, grey, Imgproc.COLOR_RGBA2GRAY);
// init contours arraylist
List<MatOfPoint> contours = new ArrayList<MatOfPoint>(200);
//blur
Imgproc.GaussianBlur(grey, grey, new Size(9,9), 10);
Imgproc.threshold(grey, grey, 80, 150, Imgproc.THRESH_BINARY);
// because findContours modifies the image I back it up
Mat greyCopy = new Mat();
grey.copyTo(greyCopy);
Imgproc.findContours(greyCopy, contours, new Mat(), Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_NONE);
// Now I have my controus pefectly
MatOfPoint2f mMOP2f1 = new MatOfPoint2f();
//a list for only selected contours
List<MatOfPoint> SelectedContours = new ArrayList<MatOfPoint>(400);
for(int i=0;i<contours.size();i++)
{
if(here I should put a condition that distinguishes my spots, eg: if contour inside is black and is a black disk)
{
SelectedContours.add(contours.get(i));
}
}
Imgproc.drawContours(mRgba, SelectedContours, -1, new Scalar(255,0,0,255), 1);
return mRgba;
}
EDIT:
Một tính năng độc đáo của đường nét của tôi sau khi ngưỡng là chúng hoàn toàn đen từ bên trong, có anyway tôi có thể tính toán màu sắc trung bình/cường độ cho một đường viền nhất định?
được hiển thị trong hình nào? –
Chỉ cần thêm nó, xin lỗi –