我现在正在使用 ITK 库进行图像注册。我用 OpenCV 读取源图像,然后将它们转换为 ITKImage;注册后,我将结果转换为 CVMat 并使用 imwrite 存储它。
但是,ITKOmageToCVMat 总是给出一个白色的图像(由 imshow 显示),并且在 imwrite 之后,结果不会存储在文件夹中。这太奇怪了……
下面是我的代码:
cv::Mat img1 = imread(argv[1], IMREAD_GRAYSCALE);
cv::Mat img2 = imread(argv[2], IMREAD_GRAYSCALE);
typedef float PixelType;
const unsigned int Dimension = 2;
typedef itk::Image< PixelType, Dimension > FixedImageType;
typedef itk::Image< PixelType, Dimension > MovingImageType;
typedef itk::OpenCVImageBridge BridgeType;
FixedImageType::Pointer fixedImage = BridgeType::CVMatToITKImage<FixedImageType>(img1);
MovingImageType::Pointer movingImage = BridgeType::CVMatToITKImage<MovingImageType>(img2);
Mat img3 = itk::OpenCVImageBridge::ITKImageToCVMat<MovingImageType>(movingImage);
display("moving image", img3);
string filename3 = "img3";
imwrite(filename3, img3);
即使没有注册,只需将图像从 CVMat 转换为 ITKImage,然后再转换回来,它不起作用....您有什么想法吗?谢谢 :)