我跟着this tutorial安裝OpenCV與Qt一起工作。 幾年前,我在Qt之前使用過OpenCV,而且我必須自己構建OpenCV和Qt。我現在很高興通過構建OpenCV解決方案。OpenCV 3似乎不能與Qt
CMake像往常一樣有很多錯誤。我不得不禁用一堆附加功能,比如opencv_apps和examples,但是它正確地構建了這些庫。 動態庫不工作,但我打算靜態地使用它。
#include <opencv.hpp>
// ...
cv::Mat image = cv::imread("testimage.png");
cv::namedWindow("Test image");
cv::imshow("Test image", image);
cv::waitKey(1000);
它沒有:
連接在Qt的OpenCV的庫,而不是忘記了圖像的開放已經移動到「imgcodecs」
LIBS += -lopencv_core300 -lopencv_highgui300 -lopencv_imgproc300
LIBS += -lopencv_imgcodecs300
我想一個簡單的程序後,工作。
matrix.cpp:-1: error: undefined reference to `[email protected]'
搜索在谷歌「ippicviSum」返回絕對沒有(當然,直到這個問題會被他們抓取)。
我知道,圖書館至少有些工作,或者至少發現,因爲如果我從項目文件中刪除lopencv_imgcodecs300
,我得到一個額外的錯誤,這是不存在的時候被列入該庫:
error: undefined reference to `cv::imread(cv::String const&, int)'
我放棄了對C++ API,並試圖用經典的C API。 (在我的試驗2年前,C++ API也有一些問題 - 基本開放和顯示工作,但更復雜的算法給出鏈接錯誤,所以我使出了C API,它工作正常)
#include <cv.h>
#include <cvaux.h>
#include <cvwimage.h>
#include <cxcore.h>
#include <highgui.h>
// ...
IplImage *image = cvLoadImage("testimage.png");
其結果是:
loadsave.cpp:-1: error: undefined reference to `cv::String::deallocate()'
謝謝,我會試試看。我從官方網頁下載了OpenCV作爲安裝程序,但由於二進制文件無法與Qt一起使用,並且安裝包中有源代碼,因此我使用該源代碼來構建它。 – vsz
關於'cv :: String':我怎麼不**使用它?我沒有具體包含它,似乎一個簡單的字符串文字被編譯爲'cv :: String'。 – vsz
關於你上次的編輯:請看我的第一個例子。我首先使用了新的API,只有在它沒有工作之後,我才嘗試使用C API。從以前的經驗來看,它始終是C API在C++ API遇到問題的情況下工作的。 (我會嘗試一個僅用於源代碼的下載,並檢查該源代碼是否與包含二進制文件的下載內容不同,如果是,那麼我將重新構建它,當我再次進入我所在的計算機時實驗) – vsz