日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

cmake could not find openssl_Mac OSX系统CMake、QT5运行OpenCV 4.0

發布時間:2025/3/15 windows 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmake could not find openssl_Mac OSX系统CMake、QT5运行OpenCV 4.0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近打算練習下QT玩一玩,畢竟QT是跨平臺的API,就可以免去了直接學各平臺系統的API然后能做一些簡單的應用,所以比較值得學習。對我來說,我比較關注計算機圖形學和計算機視覺,所以最重要的包就是OpenGL和OpenCV。其中OpenGL在安裝QT的時候,離線安裝包中已經包含OpenGL和OpenGL ES,并且有對應的example來測試OpenGL,所以這部分沒出太大問題。但是OpenCV遇到了問題,因此記錄一下解決過程。

平臺:MacBook Pro with OS X 10.14.3

CMake:CMake 3.10.2

QT:QT 5.12、QT creator 4.8.1

OpenCV:OpenCV 4.0.1

1、安裝OpenCV

Mac安裝OpenCV很容易,一行命令就解決了。

brew install opencv

### 此處我不得不說OSX對程序員來說實在是太好用太方便了,不信你在Ubuntu中試試下面這行命令?

apt-get install opencv

怎么樣?不行吧?(^o^)/~ ###

好的言歸正傳,此時homebrew自動安裝的OpenCV版本是最新的(當前是4.0.1),如果你想安裝OpenCV 3的版本可以使用:

brew install opencv@3

安裝好之后把下面的東西加入你的~/.bash_profile(如果用的是oh my zsh的話是加入到~/.zshrc)最后,這是為了讓你的系統找到一些需要用到的環境:

export PATH="/usr/local/opt/openssl/bin:$PATH" export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include" export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"export PATH="/usr/local/opt/icu4c/bin:$PATH" export PATH="/usr/local/opt/icu4c/sbin:$PATH" export LDFLAGS="-L/usr/local/opt/icu4c/lib" export CPPFLAGS="-I/usr/local/opt/icu4c/include" export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"export LDFLAGS="-L/usr/local/opt/openblas/lib" export CPPFLAGS="-I/usr/local/opt/openblas/include" export PKG_CONFIG_PATH="/usr/local/opt/openblas/lib/pkgconfig"export LDFLAGS="-L/usr/local/opt/readline/lib" export CPPFLAGS="-I/usr/local/opt/readline/include" export PKG_CONFIG_PATH="/usr/local/opt/readline/lib/pkgconfig"

然后就裝好了。

2、CMake測試OpenCV

隨便建一個文件夾,寫一個CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)add_compile_options(-std=c++11)project(opencv_test)find_package(OpenCV REQUIRED)add_executable(opencv_test opencv_test.cpp) #注意.cpp名字要和你的.cpp名字一致target_link_libraries(opencv_test ${OpenCV_LIBS})

寫一個opencv_test.cpp:

#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream>using namespace std;int main( int argc, char** argv) {cv::Mat img = cv::imread("某張圖的路徑");cv::imshow("test", img);cv::waitKey(0);return 0; }

然后命令行輸入:

cmake . make ./opencv_test

出現一個窗口名為“test”,窗口里有這張圖,則大功告成。

3、QT配置

新建一個空的QT Console Application,隨便取個名字叫test_opencv。

建立之后,在他的test_opencv.pro配置文件中,輸入OpenCV的頭文件所在的位置(一般來說是/usr/local/include/opencv2),以及動態鏈接庫在的位置(一般來說是/usr/local/lib),記得LIBS那里-L不能少:

INCLUDEPATH += /usr/local/include INCLUDEPATH += /usr/local/include/opencv2 LIBS += -L/usr/local/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_fuzzy -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core

好的,然后就是在main.cpp里鍵入你的代碼測試:

#include <QCoreApplication> #include <opencv2/core.hpp> #include <opencv2/highgui/highgui.hpp>int main(int argc, char *argv[]) {cv::Mat img = cv::imread("某張圖的路徑");cv::imshow("test", img);cv::waitKey(0);return 0; }

然后點擊左下角的運行按鈕,編譯完,會自動打開terminal執行這段命令,然后就跳出了帶著圖片的“test”窗口。

會出現的問題:

1、有人說QT會出現下面的情況,但是這個情況我沒有遇到過:

dyld: Symbol not found: __cg_jpeg_resync_to_restart Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO Expected in: /usr/local/lib/libjpeg.8.dylib in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO

解決方法是:項目-> Build & Run -> Run -> Run Environment -> 詳情,然后點擊DYLD_LIBRARY_PATH,再點擊取消設置。(但是我總感覺這個辦法不是很靠譜,因為這是把動態鏈接的位置給取消了,可能會帶來其他問題)這個問題我沒遇到過哦!!只是提供參考。

2、我在QT中遇到的情況:

symbol(s) not found for architecture x86_64 linker command failed with exit code 1 (use -v to see invocation)

這情況初學者基本都遇到過,不管在什么系統上win也好、Ubuntu也好、OSX也好,意思大家都知道了就是動態鏈接庫沒找到。這問題奇怪了,我明明是設置了LIBS的,怎么沒找到,按照網上找的各種方法也都試過了,卵用。

然后我特意進入/usr/local/lib里看,確實有很多libopencv_*的文件,后綴是版本好。因為我曾經安裝過OpenCV3代的版本,所以我發現lib里非常亂,什么2.4、3.4.0、3.4.1、3.4.5各種都有。所以我懷疑可能是版本發生了沖突,然后我決定重新清理一下OpenCV。(注意!!!下面命令是有風險的,慎用!!!明確需要再用!!!出問題我不負責!!!)

brew uninstall opencv rm /usr/local/lib/libopencv_* rm -rf /usr/local/include/opencv rm -rf /usr/local/include/opencv2

所以我就把系統里所有的OpenCV庫啊、頭文件啊啥的全部清理了,然后重新安裝OpenCV。

brew install opencv

然后我發現新裝的OpenCV4的頭文件在/usr/local/include/opencv4/opencv2這個文件夾里,為了統一一般來說opencv2這個文件夾應該直接在/usr/local/include/opencv2這里的,所以我就把opencv2這個文件夾復制到了/usr/local/include里了。再回到QT里,運行,搞定!

好了,填坑就到這里,希望能夠幫助大家。繼續學習。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的cmake could not find openssl_Mac OSX系统CMake、QT5运行OpenCV 4.0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。