title: How does the constructors for cv::Point3f work?
body: <p>How do these codes work?</p>
  <ol>
  <li>cv::Point3f pt{1};</li>
  <li>cv::Point3f pt{3};</li>
  <li>cv::Point3f pt{1, 2, 3};</li>
  <li>std::vector&lt;cv::Point3f&gt; pts{1};</li>
  <li>std::vector&lt;cv::Point3f&gt; pts{3};</li>
  <li>std::vector&lt;std::vector&lt;cv::Point3f&gt;&gt; object_points{0};</li>
  <li>std::vector&lt;std::vector&lt;cv::Point3f&gt;&gt; object_points{1};</li>
  </ol>
  <p>These questions arise from my implementation of camera calibration. The camera calibration requires us to create the 2D image_points and the 3D object_points to be used in cv::calibrateCamera() for computing the reprojection error.</p>
  <p>Hence, I create the <code>object_points</code> like this:</p>
  <pre><code>std::vector&lt;std::vector&lt;cv::Point3f&gt;&gt; object_points{1}; 
  
  ... // Fill in the object_points container with the &quot;actual&quot; corners in the chessboard. 
  
  object_points.resize(image_points.size(), object_points[0]); // Copy the entries in object_points[0]` to fill in the outer container of `object_points
  </code></pre>