title: using OpenCV with std::Array
body: <p>This question is related to this one  <a href="https://stackoverflow.com/questions/34435578/stdarrayt-n-need-to-be-fetched-in-another-types">std::array&lt;T,N&gt; need to be fetched in another types</a></p>
  
  <p>I have noticed that OpenCV methods that deal with sequence of points accept either <code>cv::InputArray</code> or <code>const*</code> of the point type. e.g. (<code>cv::Point* const</code>)
  When you have your points in <code>std::array</code>, you may depend on the <code>const*</code> input of the OpenCV method and call <code>my_array.data()</code> in order to get a pointer of the type. However, you will have to deal with the <code>cv::Point</code> to <code>cv::Point2f</code> and vice-versa problem. Furthermore, it is not really the right way.</p>
  
  <p>I thought that the solution could be found in <code>cv::InputArray</code> where I will find iterator-based solution or at least overloads for C++ standard containers. I read its documentation and I shocked that it takes either <code>std::vector</code> or <code>cv::Mat</code> and some other Gpu data types. </p>
  
  <p>The question is : How to overcome this problem? Did I miss something? in other word: How to use OpenCV with the standard container in the best way?</p>
  
  <p><strong>Example:</strong></p>
  
  <pre><code>std::array&lt;cv::Point,4&gt; my_points,my_points2;
  //fill my_points,my_points2
  cv::fillConvexPoly(img, my_points.data(), 4, cv::Scalar::all(255));//this works
  auto homography_matrix = cv::getPerspectiveTransform(my_points.data(), my_points2.data()); //This will not work
  </code></pre>