QT5.14+OpenCV4.5.5
ITK编译安装
- VS2022安装配置
- Visual Studio 2022安装配置_热度__的博客-CSDN博客
- CMake-GUI下载:Download | CMake
- ITK源代码下载: Download | CMake
- 勾选Advanced,搜索“CMAKE_BUILD_TYPE”,选择编译版本Debug或Release
- 搜索“opencv”,勾选“Module_ITKVideoBridgeOpenCV”
- 搜索“prefix”,更新“CMAKE_INSTALL_PREFIX”为ITK最终期望安装的目录
编辑
- 点击Configure,报错,再次搜索opencv,更新“OpenCV_DIR”
- 点击Configure,显示Configuring done,点击Generate,显示Generating done,点击Open Project
- 在VS2022中,选择Debug x64模式,右键点击项目名,选择生成
- 右键点击INSTALL,选择生成
- 均无报错,ITK编译完成
QT5.14+OpenCV4.5.5+ITK5.2.1测试
- 新建一个QT窗口项目
- 在.pro文件中添加:
# opencv
LIBS += -LD:\Software\opencv\build\x64\vc15\lib \
-lopencv_world455d
# release模式将-lopencv_world455d 替换为 -lopencv_world455
INCLUDEPATH += D:\Software\opencv\build\include
# itk
INCLUDEPATH +=E:\Downloads\opencv\build\include \
D:\ITK\ITK\include\ITK-5.2
LIBS += shell32.lib\
AdvAPI32.Lib\
rpcrt4.lib\
WS2_32.lib
LIBS += -LD:\ITK\ITK\lib \
-lITKBiasCorrection-5.2 \
-lITKColormap-5.2 \
-lITKCommon-5.2 \
-lITKConvolution-5.2 \
-lITKDeformableMesh-5.2 \
-lITKDenoising-5.2 \
-lITKDICOMParser-5.2 \
-lITKDiffusionTensorImage-5.2 \
-litkdouble-conversion-5.2 \
-lITKEXPAT-5.2 \
-lITKFastMarching-5.2 \
-lITKFFT-5.2 \
-litkgdcmcharls-5.2 \
-litkgdcmCommon-5.2 \
-litkgdcmDICT-5.2 \
-litkgdcmDSED-5.2 \
-litkgdcmIOD-5.2 \
-litkgdcmjpeg12-5.2 \
-litkgdcmjpeg16-5.2 \
-litkgdcmjpeg8-5.2 \
-litkgdcmMEXD-5.2 \
-litkgdcmMSFF-5.2 \
-litkgdcmopenjp2-5.2 \
-litkgdcmsocketxx-5.2 \
-lITKgiftiio-5.2 \
-litkhdf5_cpp-static-5.2_D \
-litkhdf5-static-5.2_D \
# release模式将
#-litkhdf5_cpp-static-5.2_D
#-litkhdf5-static-5.2_D
#替换为
#-litkhdf5-shared-5.2 \
#-litkhdf5_cpp-shared-5.2 \
-lITKImageFeature-5.2 \
-lITKImageIntensity-5.2 \
-lITKIOBioRad-5.2 \
-lITKIOBMP-5.2 \
-lITKIOBruker-5.2 \
-lITKIOCSV-5.2 \
-lITKIOGDCM-5.2 \
-lITKIOGE-5.2 \
-lITKIOGIPL-5.2 \
-lITKIOHDF5-5.2 \
-lITKIOImageBase-5.2 \
-lITKIOIPL-5.2 \
-lITKIOJPEG-5.2 \
-lITKIOJPEG2000-5.2 \
-lITKIOLSM-5.2 \
-lITKIOMeshBase-5.2 \
-lITKIOMeshBYU-5.2 \
-lITKIOMeshFreeSurfer-5.2 \
-lITKIOMeshGifti-5.2 \
-lITKIOMeshOBJ-5.2 \
-lITKIOMeshOFF-5.2 \
-lITKIOMeshVTK-5.2 \
-lITKIOMeta-5.2 \
-lITKIOMINC-5.2 \
-lITKIOMRC-5.2 \
-lITKIONIFTI-5.2 \
-lITKIONRRD-5.2 \
-lITKIOPNG-5.2 \
-lITKIOSiemens-5.2 \
-lITKIOSpatialObjects-5.2 \
-lITKIOStimulate-5.2 \
-lITKIOTIFF-5.2 \
-lITKIOTransformBase-5.2 \
-lITKIOTransformHDF5-5.2 \
-lITKIOTransformInsightLegacy-5.2 \
-lITKIOTransformMatlab-5.2 \
-lITKIOVTK-5.2 \
-lITKIOXML-5.2 \
-litkjpeg-5.2 \
-lITKKLMRegionGrowing-5.2 \
-lITKLabelMap-5.2 \
-litklbfgs-5.2 \
-lITKMarkovRandomFieldsClassifiers-5.2 \
-lITKMathematicalMorphology-5.2 \
-lITKMesh-5.2 \
-lITKMetaIO-5.2 \
-litkminc2-5.2 \
-litkNetlibSlatec-5.2 \
-lITKniftiio-5.2 \
-lITKNrrdIO-5.2 \
-litkopenjpeg-5.2 \
-lITKOptimizers-5.2 \
-lITKOptimizersv4-5.2 \
-lITKPath-5.2 \
-lITKPDEDeformableRegistration-5.2 \
-litkpng-5.2 \
-lITKPolynomials-5.2 \
-lITKQuadEdgeMesh-5.2 \
-lITKQuadEdgeMeshFiltering-5.2 \
-lITKRegionGrowing-5.2 \
-lITKRegistrationMethodsv4-5.2 \
-lITKSmoothing-5.2 \
-lITKSpatialObjects-5.2 \
-lITKStatistics-5.2 \
-litksys-5.2 \
-lITKTestKernel-5.2 \
-litktestlib-5.2 \
-litktiff-5.2 \
-lITKTransform-5.2 \
-lITKTransformFactory-5.2 \
-litkv3p_netlib-5.2 \
-litkvcl-5.2 \
-lITKVideoCore-5.2 \
-lITKVideoIO-5.2 \
-litkvnl-5.2 \
-lITKVNLInstantiation-5.2 \
-litkvnl_algo-5.2 \
-lITKVTK-5.2 \
-lITKWatersheds-5.2 \
-litkzlib-5.2 \
-lITKznz-5.2 \
- mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "opencv2/opencv.hpp"
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkRGBPixel.h"
#include "itkJPEGImageIO.h"
#include "itkJPEGImageIOFactory.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
itk::JPEGImageIOFactory::RegisterOneFactory();
using PixelType = itk::RGBPixel<unsigned char>;
using ImageType = itk::Image<PixelType, 2>;
using ReaderType = itk::ImageFileReader<ImageType>;
auto reader = ReaderType::New();
const char * const filename = "D:\\DVA.jpg";
reader->SetFileName(filename);
try
{
reader->Update();
}
catch (const itk::ExceptionObject & e)
{
std::cerr << "exception in file reader " << std::endl;
std::cerr << e.GetDescription() << std::endl;
std::cerr << e.GetLocation() << std::endl;
}
auto rst = reader->GetOutput();
std::cout << rst << std::endl;
}
MainWindow::~MainWindow()
{
delete ui;
}
- 输出