bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.55k stars 1.58k forks source link

how to use opencv_imgproc.polylines() #1949

Closed crasy1 closed 1 year ago

crasy1 commented 1 year ago

i use like this

        Mat mat=new Mat(1000,1000,opencv_core.CV_8U,Scalar.BLACK);
        org.bytedeco.opencv.opencv_core.Point[] pointArr =new org.bytedeco.opencv.opencv_core.Point[]{
                new org.bytedeco.opencv.opencv_core.Point(100,100),
                new org.bytedeco.opencv.opencv_core.Point(500,100),
                new org.bytedeco.opencv.opencv_core.Point(500,500),
                new org.bytedeco.opencv.opencv_core.Point(100,500)
        };
        PointerPointer pointerPointer = new PointerPointer(1);
        pointerPointer.put(pointArr);
        IntPointer intPointer = new IntPointer(1);
        int[] ints = {4};
        intPointer.put(ints);
        polylines(mat,pointerPointer,intPointer,1,true,Scalar.WHITE,1,LINE_8,0);
        imwrite("img.jpg",mat);

but result is wrong circle2

saudet commented 1 year ago

It's probably easier to use the overloads that take a MatVector instead of a PointerPointer....

crasy1 commented 1 year ago

how to construct MatVector by Point array

saudet commented 1 year ago

We can do something like shown in discussion https://github.com/bytedeco/javacv/discussions/1778#discussioncomment-2343876.

crasy1 commented 1 year ago

@saudet got it ,thanks

saudet commented 1 year ago

Duplicate of #1778