c++ - 在 OpenCV 中将 cv::Mat 转换为 Cvmat*

标签 c++ c opencv image-processing

假设,我声明我的 CvMat* 如下所示,然后将其转换为 cv::Mat,然后将类型从 CV_8UC1 转换为 CV_32FC1。然后在转换后,我想将其恢复为 CVMat*。有人可以告诉我如何从 cv::Mat 到 CvMat* 的转换吗?

     CvMat* r1 = cvLoadImageM(argv[2], 0);
     cv::Mat r1cpp(r1);
     r1.convertTo(r1, CV_32FC1, 1.0/255.0);

或者有人知道如何使用 C API 将 CV_8UC1 转换为 CV_32FC1 吗?

最佳答案

您可以使用 cvConvertScale((src), (dst), 1, 0 ) 通过 C API 将 CV_8UC1 转换为 CV_32FC1命令如下

// source image
CvMat* src = cvLoadImageM(argv[2], 0); 

// allocate destination image of type CV_32F
CvMat* dst = cvCreateMat(src->height, src->width, CV_32FC1) 

// convert src image to dst image (type CV_32F)
cvConvertScale(src, dst, 1, 0 );  

关于c++ - 在 OpenCV 中将 cv::Mat 转换为 Cvmat*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17746640/

相关文章:

c++ - 创建原始 OpenGL 纹理数据 (C++)

c++ - 为什么我不能使 C++ 中的对象具有作为其他对象的数据成员?

带有 2 个编译器的 C++

python - 使用Qt Gui进行实时视频源的Opencv人脸检测速度较慢

java - 在 opencv java 中为来自网络摄像头的视频输入实现背景减法?

c++ - 为什么相同的 gcc 编译选项在不同的计算机体系结构上会有不同的表现?

c - 如何破解 elf 文件以调用其他 function() 而不是 main?

c - C 中的 BST 程序

c - 将 cvRect 作为图像输出

c++ - 使用OpenCV创建视频-Gstreamer编解码器不起作用