我有灰色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还是任何转换?
答案 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.