仅限灰度图片
cv::Mat cvImg = cv::imread("1.bmp", 0);
cv::Mat cvImgOut;
cv::Mat cameraMatrix;
cv::Mat distCoeffs;
cv::FileStorage fs("cal.file", cv::FileStorage::READ);
fs["cameraMatrix"] >> cameraMatrix;
fs["distCoeffs"] >> distCoeffs;
fs.release();
int n = cvImg.channels();
cv::undistort(cvImg, cvImgOut, cameraMatrix, distCoeffs);
cv::imwrite("test0.bmp", cvImgOut);
n = cvImgOut.channels();
if (cvImgOut.channels() > 1)
{
cv::cvtColor(cvImgOut, cvImgOut, CV_RGB2GRAY);
}
MIL_ID MilImage;
MbufAlloc2d(MilSystem, 2592, 1944, 8 + M_UNSIGNED, M_IMAGE + M_PROC + M_DISP, & MilImage);
MbufPut(MilImage,cvImgOut.data);
MbufSave(MIL_TEXT("testMil.bmp"), MilImage);
MbufFree(MilImage);
MbufRestore(MIL_TEXT("testMil.bmp"), MilSystem, & MilImage);
byte * buf = new byte[2592 * 1944 + 10]();
MbufGet(MilImage, buf);
cv::Mat cvImg2(1944, 2592, CV_8UC1, buf);
cv::imwrite("testCV.bmp", cvImg2);
delete [] buf;
buf = NULL;
MbufFree(MilImage);