Updated by Andrey Kamaev almost 13 years ago
When I call @calibrationCamera2()@ calibrationCamera2() with tvecs as M*1 3-channel matrix, I got an exception:
<pre>
OpenCV Error: Assertion failed (src.size == dst.size && src.channels() == dst.channels()) in unknown function
file modules\core\src\convert.cpp, line 1193
</pre>
I trace into the source code and find a bug:
<pre><code class="cpp">
if( tvecs )
{
src = cvMat( 3, 1, CV_64F, solver.param->data.db + NINTRINSIC + i*6 + 3 );
dst = cvMat( 3, 1, CV_MAT_TYPE(tvecs->type), -@CV_MAT_TYPE(tvecs->type)@-, tvecs->rows == 1 ?
tvecs->data.ptr + i*CV_ELEM_SIZE(tvecs->type) : tvecs->data.ptr + tvecs->step*i );
cvConvert( &src, &dst );
}
</code></pre>
It should be:
<pre><code class="cpp">
if( tvecs )
{
src = cvMat( 3, 1, CV_64F, solver.param->data.db + NINTRINSIC + i*6 + 3 );
dst = cvMat( 3, 1, CV_MAT_DEPTH(tvecs->type), *@CV_MAT_DEPTH(tvecs->type)@*, tvecs->rows == 1 ?
tvecs->data.ptr + i*CV_ELEM_SIZE(tvecs->type) : tvecs->data.ptr + tvecs->step*i );
cvConvert( &src, &dst );
}
</code></pre>
<pre>
OpenCV Error: Assertion failed (src.size == dst.size && src.channels() == dst.channels()) in unknown function
file modules\core\src\convert.cpp, line 1193
</pre>
I trace into the source code and find a bug:
<pre><code class="cpp">
if( tvecs )
{
src = cvMat( 3, 1, CV_64F, solver.param->data.db + NINTRINSIC + i*6 + 3 );
dst = cvMat( 3, 1, CV_MAT_TYPE(tvecs->type), -@CV_MAT_TYPE(tvecs->type)@-, tvecs->rows == 1 ?
tvecs->data.ptr + i*CV_ELEM_SIZE(tvecs->type) : tvecs->data.ptr + tvecs->step*i );
cvConvert( &src, &dst );
}
</code></pre>
It should be:
<pre><code class="cpp">
if( tvecs )
{
src = cvMat( 3, 1, CV_64F, solver.param->data.db + NINTRINSIC + i*6 + 3 );
dst = cvMat( 3, 1, CV_MAT_DEPTH(tvecs->type), *@CV_MAT_DEPTH(tvecs->type)@*, tvecs->rows == 1 ?
tvecs->data.ptr + i*CV_ELEM_SIZE(tvecs->type) : tvecs->data.ptr + tvecs->step*i );
cvConvert( &src, &dst );
}
</code></pre>