边界追踪

时间:2016-09-07 19:12:18

标签: java opencv

Mat img =Imgcodecs.imread(path);
Mat src = new Mat();

Imgproc.cvtColor(img, src, Imgproc.COLOR_BGR2GRAY);
Imgproc.threshold(src, src, 127, 255, Imgproc.THRESH_TOZERO);
Imgproc.Canny(src, src, 10,100, 3,true);


  ArrayList<MatOfPoint> contours = new ArrayList<MatOfPoint>();    
    Imgproc.findContours(src, contours, new Mat(), Imgproc.RETR_LIST,Imgproc.CHAIN_APPROX_SIMPLE);

    Mat contourImg = new Mat(img.size(), img.type());


    Point p= new Point(150,260);

    for (int i = 0; i < contours.size(); i++) {
        Imgproc.drawContours(contourImg, contours, i, new Scalar(0, 0, 255), -1);
    }

enter image description here

当我点击椭圆区域的任何位置时,如何更改红色椭圆的颜色? 我可以通过鼠标点击获得x和y坐标,但我无法操作“边界跟踪”。这是我写的代码;

1 个答案:

答案 0 :(得分:0)

如果您具有椭圆边界的轮廓坐标,则可以使用多边形测试中的点来检查鼠标的x,y是否在椭圆内。

在opencv中,它是函数pointPolygonTest http://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/point_polygon_test/point_polygon_test.html