c OpenCV;如何将二维数组转换为IplImage?

c OpenCV;如何将二维数组转换为IplImage?,c,opencv,iplimage,C,Opencv,Iplimage,我正在使用c-api,我是OpenCV的新手 假设我有二维数组,包括;红色[]、绿色[]、蓝色[]。我想将3个二维数组转换为IplImage,并将其保存到.png文件中。但是,从我的系统中,我无法使用CvMat 你能帮我解决这个问题吗 谢谢。 < P>如果你使用C++,使用C++ API:< /P> cv::Mat image = cv::Mat::zeros(w,h, CV_8UC3); for(int x=0;x<w;x++) for(int y=0;y<h;y++)

我正在使用c-api,我是OpenCV的新手

假设我有二维数组,包括;红色[]、绿色[]、蓝色[]。我想将3个二维数组转换为IplImage,并将其保存到.png文件中。但是,从我的系统中,我无法使用CvMat

你能帮我解决这个问题吗


谢谢。

< P>如果你使用C++,使用C++ API:< /P>
cv::Mat image = cv::Mat::zeros(w,h, CV_8UC3);
for(int x=0;x<w;x++)
   for(int y=0;y<h;y++)
        image.at<cv::Vec3b>(y,x) = cv::Vec3b(red[x][y], blue[x][y], green[x][y]);
cv::imwrite("image.png", image);

记得如果不需要FrimeCurvt就可以释放内存。

IPLIMAGE是过时的C-API,而不是C++。避免它。感谢您提供更多信息,但我无法控制我现在使用它的系统。感谢您的代码,但我在编译时收到以下消息:“错误:调用'cv::Mat::zeros(int&,int&')时没有匹配的函数。”。也许我的系统安装了旧版本的OpencV。我不能自己控制这个系统。你能建议不使用Mat的另一种方法吗?我忘了第三个参数,它是像素类型。在我们的例子中,我们有3个未签名字符,这就是CVY8UC3的意思(CV{{每个像素位{ U s s f}{通道}),其中U -未签名、S -签名、F - FROATI将转换添加到IPLIGImImor。即使您不想使用C++ API,并且您拥有OpenCV F.> 2,您必须拥有C++ API,所以无论如何都可以使用它。
IplImage *frameConverted = new IplImage(image);