我正在使用 c-api 并且是 OpenCV 的新手。
假设我有二维数组,包括;红色[][]、绿色[][]、蓝色[][]。我想将 3 个二维数组转换为 IplImage 并将其保存到 .png 文件。但是,在我的系统中我无法使用 CvMat。
你能帮我解决这个问题吗
谢谢。
最佳答案
如果您使用的是 C++,请使用 C++ API:
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);
但是如果你真的想要 c-api,从 cv::Mat 到 IplImage 的转换是可行的:
IplImage *frameConverted = new IplImage(image);
如果您不再需要 frameConverted,请记住释放内存。
关于c 开放式简历;如何将二维数组转换为 IplImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22859579/