OpenCV和OpenCV-contrib配置中遇到的问题
一、环境
Microsoft Visual Studio 2022
opencv-4.5.5-vc14_vc15 .exe,以下简称“D:\OpenCV-4.5.5\opencv\build\include\opencv2”为OpenCV库文件夹。
opencv-contrib-4.5.5-zip。需要与opencv版本对应
cmake-3.24.0-rc1-windows-x86_64.msi。有博主说,4.5.5配cmake3.2.5及以上会报错,选择3.2.4成功配置环境。
https://cmake.org/files/
jdk-17_windows-x64_bin.msi
VTK-8.2.0.zip
二、遇到的问题
2.1 配置环境遇到的问题
2.1.1CMake遇到的问题
2.1.1.1 JNI is not found
重新下载安装jdk。安装时直接选择把路径添加到环境变量PATH中,就不用再配置环境变量了。
2.1.1.2 VTK is not found
Found JNI: C:/Program Files/Java/jdk-17/include found components: AWT JVM
VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
CMake Error at cmake/OpenCVModule.cmake:356 (_glob_locations):
Syntax error in cmake code at
D:/OpenCV-4.5.5/opencv/sources/cmake/OpenCVModule.cmake:356
when parsing string
D:\OpenCV-4.5.5\opencv_contrib-4.5.5\modules
Invalid character escape '\O'.
Call Stack (most recent call first):
cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
CMakeLists.txt:927 (ocv_register_modules)
下载VTK,重新BUILD和INSTALL。我下载的版本未VTK-8.2.0。
参照VTK下载并安装
2.1.1.3 “\o"转义字符出错。
在CMake输入路径时,路径用的是"\“,需要改为使用”/"。
如
2.1.1.4 无法启动程序 xxxxxxxxx 系统找不到指定的文件
如下图
该错误时因为没有配置“附加依赖项”。有可能你认为自己已经配置了“附加依赖项”,但是可能是你再opencv和opencv-contrib的编译过程中配置了“附加依赖项”,而将该配置 配置给了opencv项目或者opencv-contrib项目,而没有配置给你自己的项目,比如我这里没有配置“附加依赖项”给自己的“opencv_demo”项目。
2.1.1.5 无法打开输入文件“opencv——xxx.lib”。
原因时“附加依赖项”的路径不对,我最开始配置时,直接配置的时lib的名字,没有配置绝对路径。改为配置为绝对路径后,就可以正常运行了。
配置的依赖项目录,前面时自己刚才生成的newbuild目录下的库路径(每个人不一定相同)。
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_aruco455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_barcode455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_bgsegm455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_bioinspired455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_calib3d455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_ccalib455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_core455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_datasets455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_dnn_objdetect455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_dnn_superres455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_dnn455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_dpm455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_face455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_features2d455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_flann455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_fuzzy455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_gapi455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_hfs455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_highgui455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_img_hash455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_imgcodecs455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_imgproc455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_intensity_transform455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_line_descriptor455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_mcc455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_ml455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_objdetect455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_optflow455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_phase_unwrapping455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_photo455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_plot455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_quality455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_rapid455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_reg455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_rgbd455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_saliency455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_shape455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_stereo455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_stitching455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_structured_light455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_superres455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_surface_matching455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_text455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_tracking455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_video455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_videoio455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_videostab455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_viz455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_wechat_qrcode455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_xfeatures2d455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_ximgproc455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_xobjdetect455.lib
D:\OpenCV-4.5.5\opencv\newbuild\install\x64\vc17\lib\opencv_xphoto455.lib
2.2 编写代码遇到的问题
2.2.1无法打开源文件:
- /face.hpp和face/facerec.hpp——>下载opencv_contrib,在里面找到face文件夹和face.hpp。然后将其拷贝到OpenCV库文件夹下。
2.2.2未定义符CvFont——>添加依赖
#include "opencv2/imgproc/imgproc_c.h"
2.2.3未定义符FaceRecognizer——>添加命名空间。
using namespace cv::face;
2.2.4未定义符createEigenFaceRecognizer()
将该方法改为EigenFaceRecognizer::create()