Repository: opencv
Issue: OpenCV.js binding issue for perspectiveTransform using Point2fVector as input
Labels: category: javascript (js)

I am trying to call `findHomography` and `perspectiveTransform` from OpenCV.js. The issue I came across was that the binding of these two functions is only specified for `Mat` inputs and not `std::vector<cv::Point2f>` which I want to use. So I went ahead an created new bindings for these functions with these structs as inputs. However, `findHomography` seems to work while `perspectiveTransform` results in a runtime error. I am not really sure why since I essentially did the same thing for both. Any help or suggestions would be much appreciated.

**Error Message** [LIVE EXAMPLE][1]

[![enter image description here][2]][2]

**Original Bindings**

Functions

```.cpp
    Mat findHomography_wrapper(const cv::Mat& arg1, const cv::Mat& arg2, int arg3, double arg4, cv::Mat& arg5, const int arg6, const double arg7) {
        return cv::findHomography(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
    }

    void perspectiveTransform_wrapper(const cv::Mat& arg1, cv::Mat& arg2, const cv::Mat& arg3) {
        return cv::perspectiveTransform(arg1, arg2, arg3);
    }
```
Bindings
```.cpp
    function("findHomography", select_overload<Mat(const cv::Mat&, const cv::Mat&, int, double, cv::Mat&, const int, const double)>(&Wrappers::findHomography_wrapper));
    
    function("perspectiveTransform", select_overload<void(const cv::Mat&, cv::Mat&, const cv::Mat&)>(&Wrappers::perspectiveTransform_wrapper));
```
**Custom Bindings**

Functions
```.cpp
    Mat findHomographyEasy(const std::vector<cv::Point2f>& arg1, const std::vector<cv::Point2f>& arg2, int arg3) {
        return cv::findHomography(arg1,arg2,arg3);
    }
    
    void perspectiveTransformEasy(const std::vector<cv::Point2f>& arg1, std::vector<cv::Point2f>& arg2, const cv::Mat& arg3) {
        cv::perspectiveTransform(arg1, arg2, arg3); // also tried with return here
    }
```
Binding
```.cpp
    function("findHomographyEasy", &binding_utils::findHomographyEasy); // WORKS PERFECTLY
    
    function("perspectiveTransformEasy", &binding_utils::perspectiveTransformEasy); // CAUSES RUNTIME ERROR
```
**HTML / Javascript Usage**
```.html
    <script src="./opencv.js" type="text/javascript"></script>
    
    <script type="text/javascript">
    	cv['onRuntimeInitialized']=()=>{
      		match();
    	}
    
    	function match() {

            // SOME STUFF...
    
            var H = new cv.Mat();
            H = cv.findHomographyEasy(obj, scene, cv.FM_RANSAC);
    
            var obj_corners = new cv.Point2fVector();
            obj_corners[0] = new cv.Point(0,0);
            obj_corners[1] = new cv.Point(img1Raw.cols,0);
            obj_corners[2] = new cv.Point(img1Raw.cols, img1Raw.rows);
            obj_corners[3] = new cv.Point(0, img1Raw.rows);

            console.log(img1Raw.cols); // 500
            console.log(img1Raw.rows); // 363

            var scene_corners = new cv.Point2fVector();
            cv.perspectiveTransformEasy(obj_corners, scene_corners, H); // I know issue is here because I have surrounded this line with console.log

        }
    
    </script>
```

  [1]: https://strmwr-cb94e.firebaseapp.com/
  [2]: https://i.stack.imgur.com/R3O1o.png