JetBrainsのClionを使ってOpenCVでアプリを作成する方法を実際に探しています。
ChocoでOpenCVをインストールしたので、C:\ opencvにすべてのものを持っています
これはクリオンとの私のプロジェクトです
CMakeLists.txt:
cmake_minimum_required(VERSION 3.3)
project(test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories("C:\\opencv\\build\\include\\")
FIND_PACKAGE( OpenCV REQUIRED core highgui imgproc)
set(OpenCV_FOUND TRUE)
set(SOURCE_FILES main.cpp)
add_executable(prog ${SOURCE_FILES})
そしてmain.cpp:
#include <opencv2/opencv.hpp>
int main() {
cv::Mat img = cv::imread("./test.jpg", -1);
cv::imshow("Mon image", img);
cv::waitKey(0);
return 0;
}
とビルドへの応答は:
undefined reference to `cv::imread(cv::String const&, int)'
およびすべてのOpenCV関数の未定義エラー
それが機能しない理由を知っていますか?
Windowsでこれをどのように実行したかを説明できます。
C:\opencv
(または任意のフォルダ)に解凍しますCMake
を開き、ソース(2。のディレクトリ)を選択して、例を作成しますC:\opencv\mingw-build
Configure
をクリックし、MinGW Makefiles
を選択します。 (問題が発生した場合は、minGW/binディレクトリが「PATH」というラベルの環境パスに追加されていることを確認してください)Configure
]をクリックします。すべてが白の場合はGenerate
をクリックし、それ以外の場合は赤いフィールドを編集します。cmd
とdirを開いて、3のディレクトリを構築します。mingw32-make
(またはmingw64-make
)を実行します。 これにはしばらく時間がかかります。mingw32-make install
(またはmingw64-make install
)を実行します。PATH
を追加C:\opencv\mingw-build\install\x86\mingw\bin
project-root/cmake/
に追加する必要があります。CMakeLists.txt:
project(test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# Where to find CMake modules and OpenCV
set(OpenCV_DIR "C:\\opencv\\mingw-build\\install")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(test_cv main.cpp)
# add libs you need
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
# linking
target_link_libraries(test_cv ${OpenCV_LIBS})
main.cpp:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
int main(int argc, char** argv)
{
if(argc != 2)
{
std::cout << "Usage: display_image ImageToLoadAndDisplay" << std::endl;
return -1;
}
cv::Mat frame;
frame = cv::imread(argv[1], IMREAD_COLOR); // Read the file
if(!frame) // Check for invalid input
{
std::cout << "Could not open or find the frame" << std::endl;
return -1;
}
cv::namedWindow("Window", WINDOW_AUTOSIZE); // Create a window for display.
cv::imshow("Window", frame); // Show our image inside it.
cv::waitKey(0); // Wait for a keystroke in the window
return 0;
}
main.cpp
をビルドして実行します。
すべてのパスは、2。および3。で行った設定に依存します必要に応じて変更できます。