做網(wǎng)站二維碼網(wǎng)絡(luò)推廣怎么學(xué)
文章目錄
- 1. 問題現(xiàn)象
- 1.1 編譯過程警告
- 1.2 程序運(yùn)行報(bào)錯(cuò)
- 2. 分析問題原因
- 3. 解決方法
1. 問題現(xiàn)象
1.1 編譯過程警告
warning: lipopencv_improc.so.406, needed by /usr/local/lib/libopencv_xfeatures2d.so.4.6.0,
may conflict with libopencv_imgproc.so.4.2
1.2 程序運(yùn)行報(bào)錯(cuò)
terminate called after throwing an instance of 'cv::Exception'
error:(-4:Insufficient memory) Failed to locate 142099092348209 bytes in function 'OutOfMemoryError'
REQUIRED process has died!
2. 分析問題原因
根據(jù)編譯過程提示是opencv版本沖突問題,僅以警告形式出現(xiàn),程序可以編譯通過并運(yùn)行,但是運(yùn)行過程中報(bào)錯(cuò)。
使用命令$ ldd <exe文件路徑> | grep opencv
查看庫(kù)鏈接關(guān)系:
libopencv_core.so.406 => /usr/local/lib/libopencv_core.so.406 (0x00007febe47fc000)
libopencv_xfeatures2d.so.406 => /usr/local/lib/libopencv_xfeatures2d.so.406 (0x00007febe3f25000)
libopencv_imgcodecs.so.406 => /usr/local/lib/libopencv_imgcodecs.so.406 (0x00007febe25f0000)
libopencv_imgproc.so.406 => /usr/local/lib/libopencv_imgproc.so.406 (0x00007febe0a6d000)
libopencv_features2d.so.406 => /usr/local/lib/libopencv_features2d.so.406 (0x00007febded2f000)
libopencv_flann.so.406 => /usr/local/lib/libopencv_flann.so.406 (0x00007febd8b7a000)
libopencv_core.so.4.2 => /usr/local/lib/libopencv_core.so.4.2 (0x00007febe47fc000)
libopencv_xfeatures2d.so.4.2 => /usr/local/lib/libopencv_xfeatures2d.so.4.2 (0x00007febe3f25000)
libopencv_imgcodecs.so.4.2 => /usr/local/lib/libopencv_imgcodecs.so.4.2 (0x00007febe25f0000)
libopencv_imgproc.so.4.2 => /usr/local/lib/libopencv_imgproc.so.4.2 (0x00007febe0a6d000)
libopencv_features2d.so.4.2 => /usr/local/lib/libopencv_features2d.so.4.2 (0x00007febded2f000)
libopencv_flann.so.4.2 => /usr/local/lib/libopencv_flann.so.4.2 (0x00007febd8b7a000)
看到每個(gè)opencv動(dòng)態(tài)鏈接庫(kù)被鏈接到了兩個(gè)版本,分析原因?yàn)镽OS Noetic安裝中會(huì)自帶OpenCV 4.2庫(kù)和cv_bridge,而我自己安裝使用了OpenCV 4.6和OpenCV_contrib 4.x,兩者造成了沖突,cv_bridge的沖突通過修改cmake文件更改所使用的OpenCV庫(kù)路徑可以解決,具體參考以下方法:
REF:https://blog.csdn.net/qq_34213260/article/details/123761580
3. 解決方法
在工程的CMakeList.txt中指定工程所使用的OpenCV庫(kù)的具體版本,可以通過設(shè)置精確庫(kù)路徑
set(OpenCV_DIR "<OpenCVConfig.cmake文件的絕對(duì)路徑>")