打印一个3通道矩阵:
inline void cv3DoubleMatPrint( const CvMat* mat )
{
int i, j;
for( i = 0; i < mat->rows; i++ )
{
for( j = 0; j < mat->cols; j++ )
{
CvScalar scal = cvGet2D( mat, i, j );
printf( "(%f,%f,%f) ", scal.val[0], scal.val[1], scal.val[2] );
}
printf( "/n" );
}
inline void cv3DoubleMatPrint( const CvMat* mat )
{
int i, j;
for( i = 0; i < mat->rows; i++ )
{
for( j = 0; j < mat->cols; j++ )
{
CvScalar scal = cvGet2D( mat, i, j );
printf( "(%f,%f,%f) ", scal.val[0], scal.val[1], scal.val[2] );
}
printf( "/n" );
}
}
这个方法巧妙的利用了CvScalar,进行打印。
类似的如果要打印一个2通道矩阵,在图像矩阵中有时需要存复数。就需要2通道矩阵了。
inline void cv2DoubleMatPrint( const CvMat* mat )
{
int i, j;
for( i = 0; i < mat->rows; i++ )
{
for( j = 0; j < mat->cols; j++ )
{
CvScalar scal = cvGet2D( mat, i, j );
printf( "(%f,%f) ", scal.val[0], scal.val[1],);
}
printf( "/n" );
}
}
参考资料:
本文详细介绍了如何使用CvMat和CvScalar进行矩阵元素的打印操作,特别针对双通道和三通道矩阵提供了两个实例代码,并解释了在图像矩阵中处理复数时使用双通道矩阵的方法。
2083

被折叠的 条评论
为什么被折叠?



