如何使用GCC编译器创建新的OpenCV Mat对象?

时间:2014-07-31 17:33:37

标签: c++ opencv gcc

我有灰色Mat(图像)。我想创建与灰度图像大小相同的彩色图像: 使用Visual C ++ Express编译:

Mat dst = cvCreateImage(gray.size(), 8, 3);

但GCC编译器错误:

threshold.cpp|462|error: conversion from ‘IplImage* {aka _IplImage*}’ to non-scalar type ‘cv::Mat’ requested|

我改为cvCreateMat

Mat dst = cvCreateMat(gray.rows, gray.cols, CV_8UC3);

但海湾合作委员会仍在:

threshold.cpp|462|error: conversion from ‘CvMat*’ to non-scalar type ‘cv::Mat’ requested|

方法是直接创建Mat还是任何转换?

1 个答案:

答案 0 :(得分:4)

cvCreateImage(gray.size(), 8, 3);

来自旧的,已弃用的c-api。不要使用它(它实际上是在创建一个IplImage *)。

像这样构建一个cv :: Mat:

Mat dst(gray.size(), CV_8UC3); // 3 uchar channels

请注意,您永远不必为结果图像预先分配任何内容,

所以,如果你想做一个阈值操作,它只是:

Mat gray = ....;
Mat thresh; // intentionally left empty!
threshold( gray,thresh, 128,255,0);
// .. go on working with thresh. no need to release it either.