# OpenCV x ITK image conversion using OpenCVImageBridge

**URL:** https://discourse.itk.org/t/opencv-x-itk-image-conversion-using-opencvimagebridge/3907
**Category:** Algorithms
**Created:** [February 25, 2021, 5:58pm UTC](https://discourse.itk.org/t/opencv-x-itk-image-conversion-using-opencvimagebridge/3907 "2021-02-25T17:58:21Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![PauloFavero](https://discourse.itk.org/user_avatar/discourse.itk.org/paulofavero/32/1907_2.png) [@PauloFavero](https://discourse.itk.org/u/PauloFavero)
#### Post date: [February 25, 2021, 5:58pm UTC](https://discourse.itk.org/t/opencv-x-itk-image-conversion-using-opencvimagebridge/3907/1 "2021-02-25T17:58:21Z")

</div>

Hi everyone,

I would like to convert simpleITK images to OpenCV images and vice versa.

The conversion from OpenCV to ITK is working fine like the example below:

```
cv::Mat movingImage = cv::imread(moving_image_path);
cv::Mat fixedImage = cv::imread(fixed_image_path);

cvMovingImage.convertTo(cvMovingImage, CV_32FC1, 1.0/255.0);

cvFixedImage.convertTo(cvFixedImage, CV_32FC1, 1.0/255.0);

typedef itk::Image<float, 2> ImageType;

ImageType::Pointer itkMovingImage = ImageType::New();
ImageType::Pointer itkFixedImage = ImageType::New();

itkMovingImage = itk::OpenCVImageBridge::CVMatToITKImage<ImageType>(cvMovingImage);
itkFixedImage = itk::OpenCVImageBridge::CVMatToITKImage<ImageType>(cvFixedImage);

m_fixedImage = sitk::Image(itkFixedImage);
m_movingImage = sitk::Image(itkMovingImage);

```

Then, I would like to convert the output from the sitk::CheckerBoard function to OpenCV image and at this moment I am getting some errors.

```
auto image = sitk::CheckerBoard(m_fixedImage, m_movingImage, {10,10,4});
sitk::Show(image, "SimpleITK Fusion", false);

// Convert ITK image image to opencv image
cv::Mat resultImage = itk::OpenCVImageBridge::ITKImageToCVMat(&image);
cv::imshow("ITK conversion", resultImage);
cv::waitKey(0);

```

This is the error that I am getting:

```
ITK/Modules/Video/BridgeOpenCV/include/itkOpenCVImageBridge.hxx:278:9: error: no type named ‘PixelType’ in ‘using ImageType = class itk::simple::Image’ {aka ‘class itk::simple::Image’}
    using InputPixelType = typename ImageType::PixelType;
             ^ ~~~~~~~~~~~~~
ITK/Modules/Video/BridgeOpenCV/include/itkOpenCVImageBridge.hxx:279:9: error: no type named ‘PixelType’ in ‘class itk::simple::Image’
   using ValueType = typename itk::NumericTraits<InputPixelType>::ValueType;
                   ^~~

```

What is wrong with this portion of the code?

Thanks 🙂

---

<div class="post-metadata">

### Author: ![dzenanz](https://discourse.itk.org/user_avatar/discourse.itk.org/dzenanz/32/1093_2.png) [@dzenanz](https://discourse.itk.org/u/dzenanz)
#### Post date: [February 25, 2021, 9:56pm UTC](https://discourse.itk.org/t/opencv-x-itk-image-conversion-using-opencvimagebridge/3907/2 "2021-02-25T21:56:13Z")

</div>

`itk::Image` and `itk::simple::Image` are two distinct classes, and the latter does not declare a public type called `PixelType`.

---

<div class="post-metadata">

### Author: ![PauloFavero](https://discourse.itk.org/user_avatar/discourse.itk.org/paulofavero/32/1907_2.png) [@PauloFavero](https://discourse.itk.org/u/PauloFavero)
#### Post date: [February 25, 2021, 10:09pm UTC](https://discourse.itk.org/t/opencv-x-itk-image-conversion-using-opencvimagebridge/3907/3 "2021-02-25T22:09:30Z")

</div>

There is a way to direct convert itk::Image to its::simple::Image? If there is no way I will probably implement everything with ITK.

---

<div class="post-metadata">

### Author: ![blowekamp](https://discourse.itk.org/user_avatar/discourse.itk.org/blowekamp/32/79_2.png) [@blowekamp](https://discourse.itk.org/u/blowekamp)
#### Post date: [February 25, 2021, 10:57pm UTC](https://discourse.itk.org/t/opencv-x-itk-image-conversion-using-opencvimagebridge/3907/4 "2021-02-25T22:57:01Z")

</div>

Hello,

Here is an example that using ITK and SimpleITK:  
[https://simpleitk.readthedocs.io/en/master/link\_ITKIntegration\_docs.html](https://simpleitk.readthedocs.io/en/master/link_ITKIntegration_docs.html)

The `sitk::Image::GetITKImage` return value can be cast to the proper itk::Image type.

Please let us know if you need more specific help.

---

<div class="post-metadata">

### Author: ![PauloFavero](https://discourse.itk.org/user_avatar/discourse.itk.org/paulofavero/32/1907_2.png) [@PauloFavero](https://discourse.itk.org/u/PauloFavero)
#### Post date: [March 9, 2021, 2:27pm UTC](https://discourse.itk.org/t/opencv-x-itk-image-conversion-using-opencvimagebridge/3907/5 "2021-03-09T14:27:11Z")

</div>

Thanks @blowekamp! In the end, I dropped simpleITK and now, I am using only ITK with openCV.
