OpenCV中矩阵深度类型转换
2011-08-15 21:32
176 查看
在OpenCV中,cv::Mat类提供了一个名为converTo的方法来进行矩阵类型转换。当然使用时需要注意的是,该函数只能进行矩阵深度类型的转换,而不能进行矩阵通道数的转换。若需要进行矩阵通道数的转换,可能需要采取进行其他的方法来变通实现。下面对该函数进行测试。
程序源代码
程序源代码
/** 根据自己机器上的OpenCV版本定义宏 * 例如使用OpenCV 2.1,则定义宏RC_OPENCV_2_1_0; * 使用OpenCV 2.2,则定义宏RC_OPENCV_2_2_0; * 以此类推 */ #define RC_OPENCV_2_3_0 #ifdef _DEBUG #ifdef RC_OPENCV_2_1_0 #pragma comment( lib, "cxcore210d.lib" ) #pragma comment( lib, "cv210d.lib" ) #pragma comment( lib, "highgui210d.lib" ) #endif #ifdef RC_OPENCV_2_2_0 #pragma comment( lib, "opencv_core220d.lib" ) #pragma comment( lib, "opencv_highgui220d.lib" ) #pragma comment( lib, "opencv_imgproc220d.lib" ) #endif #ifdef RC_OPENCV_2_3_0 #pragma comment( lib, "opencv_core230d.lib" ) #pragma comment( lib, "opencv_highgui230d.lib" ) #pragma comment( lib, "opencv_imgproc230d.lib" ) #endif #else #ifdef RC_OPENCV_2_1_0 #pragma comment( lib, "cxcore210.lib" ) #pragma comment( lib, "cv210.lib" ) #pragma comment( lib, "highgui210.lib" ) #endif #ifdef RC_OPENCV_2_2_0 #pragma comment( lib, "opencv_core220.lib" ) #pragma comment( lib, "opencv_highgui220.lib" ) #pragma comment( lib, "opencv_imgproc220.lib" ) #endif #ifdef RC_OPENCV_2_3_0 #pragma comment( lib, "opencv_core230.lib" ) #pragma comment( lib, "opencv_highgui230.lib" ) #pragma comment( lib, "opencv_imgproc230.lib" ) #endif #endif #include <cv.h> #include <highgui.h> #include <iostream> int main( int argc, char** argv ) { /** 构造一个10行10列、深度为32位、3通道的矩阵,矩阵元素初始化为10 */ cv::Mat matOrigin( 10, 10, CV_32FC3, cv::Scalar(10) ); /** 转换为深度为8位、3通道的矩阵 */ cv::Mat mat8UC3Converted; matOrigin.convertTo( mat8UC3Converted, CV_8UC3, 1, 0 ); if ( CV_8UC3 == mat8UC3Converted.type() ) { std::cout << "mat8UC3Converted 转换成功。" << std::endl; } else { std::cout << "mat8UC3Converted 转换失败。" << std::endl; } /** 转换为深度为8位、1通道的矩阵 */ cv::Mat mat8UC1Converted; matOrigin.convertTo( mat8UC1Converted, CV_8UC1, 1, 0 ); if ( CV_8UC1 == mat8UC1Converted.type() ) { std::cout << "mat8UC1Converted 转换成功。" << std::endl; } else { std::cout << "mat8UC1Converted 转换失败。" << std::endl; } system( "pause" ); return 0; }测试结果
相关文章推荐
- OpenCV2.0以后:Mat类型和CvMat类型的互相转换(附:OpenCV矩阵合并)
- opencv学习之矩阵数据类型转换convertTo
- opencv矩阵元素类型转换和cvConvertScale()函数用法
- OpenCV中的矩阵和图像类型
- opencv IplImage 和 Mat互相转换 以及其它类型的转换(持续更新)
- OpenCV学习:矩阵和图像类型
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- opencv矩阵元素数据类型
- Opencv2.X以上Mat类型与IplImage*的转换
- Opencv-Mat图像矩阵与LPBYTE图像矩阵之间的转换
- Opencv中Mat数据类型CV_8UC3转换为 CV_32FC3注意事项
- OpenCV中Mat与Matlab中mxArray类型的转换
- opencv中Mat与IplImage,CVMat类型之间转换
- 关于opencv图像类型的转换
- ios–OpenCV–IplImage与UIImage类型相互转换
- eigen与opencv矩阵转换,eigen与matlab函数比照
- OpenCV中Mat与IplImage和CvMat数据类型间的相互转换
- opencv矩阵元素数据类型
- Opencv2.X以上Mat类型与IplImage*的转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换