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

How create new OpenCV Mat object with GCC compiler?

本文关键字:OpenCV-Mat 对象 创建 何使用 GCC 编译器      更新时间:2023-10-16

我有灰色垫子(图像(。我想创建与灰色图像大小相同的彩色图像:使用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);

但是GCC仍然是

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

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

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.