Updated by Andrey Kamaev over 12 years ago
Test machine: Gateway NV53 laptop (AMD Turion II X2 M500, 4GB ram), Ubuntu 12.04, OpenCV 2.4.2 Release (installed from source), programming IDE is QT-Creator 2.4.1 (QT 4.8.0 32-bit).
<pre><code class="cpp">
int somenum=5; // this could be any positive number
cv::Mat Array1(somenum,1,CV_64F);
cv::Mat Array2(somenum,2,CV_64F);
for(int i=0;i<Array1.rows;i++)
Array1.at<double>(i,1)=(double)i;
for(int i=0;i<Array2.rows;i++)
Array2.at<double>(i,1)=(double)i;
cv::Mat Array1clone=Array1.clone();
for(int i=0;i<Array1clone.rows;i++)
qDebug("Array1clone coordinates: r%d value is %.2f\n",i,Array1clone.at<double>(i,1));
cv::Mat Array2clone=Array2.clone();
for(int i=0;i<Array2clone.rows;i++)
qDebug("Array2clone coordinates: r%d value is %.2f\n",i,Array2clone.at<double>(i,1));
**********
</code></pre>
output:
<pre>
Array1clone coordinates: r0 value is 0.00
Array1clone coordinates: r1 value is 1.00
Array1clone coordinates: r2 value is 2.00
Array1clone coordinates: r3 value is 3.00
Array1clone coordinates: r4 value is 5.00
Array2clone coordinates: r0 value is 0.00
Array2clone coordinates: r1 value is 1.00
Array2clone coordinates: r2 value is 2.00
Array2clone coordinates: r3 value is 3.00
Array2clone coordinates: r4 value is 4.00
****
</pre>
Array1 is created as a 1D cv::mat object, and Array2 is created as a 2D cv::mat object. Array1 and Array2 are supposed to have {0,1,2,3,4} in the first column, but for some reason the clone version of Array1, Array1clone, contains garbage data (5) in the last entry.
<pre><code class="cpp">
int somenum=5; // this could be any positive number
cv::Mat Array1(somenum,1,CV_64F);
cv::Mat Array2(somenum,2,CV_64F);
for(int i=0;i<Array1.rows;i++)
Array1.at<double>(i,1)=(double)i;
for(int i=0;i<Array2.rows;i++)
Array2.at<double>(i,1)=(double)i;
cv::Mat Array1clone=Array1.clone();
for(int i=0;i<Array1clone.rows;i++)
qDebug("Array1clone coordinates: r%d value is %.2f\n",i,Array1clone.at<double>(i,1));
cv::Mat Array2clone=Array2.clone();
for(int i=0;i<Array2clone.rows;i++)
qDebug("Array2clone coordinates: r%d value is %.2f\n",i,Array2clone.at<double>(i,1));
**********
</code></pre>
output:
<pre>
Array1clone coordinates: r0 value is 0.00
Array1clone coordinates: r1 value is 1.00
Array1clone coordinates: r2 value is 2.00
Array1clone coordinates: r3 value is 3.00
Array1clone coordinates: r4 value is 5.00
Array2clone coordinates: r0 value is 0.00
Array2clone coordinates: r1 value is 1.00
Array2clone coordinates: r2 value is 2.00
Array2clone coordinates: r3 value is 3.00
Array2clone coordinates: r4 value is 4.00
****
</pre>
Array1 is created as a 1D cv::mat object, and Array2 is created as a 2D cv::mat object. Array1 and Array2 are supposed to have {0,1,2,3,4} in the first column, but for some reason the clone version of Array1, Array1clone, contains garbage data (5) in the last entry.