我实际上正在寻找一种方法来使用OpenCV与JetBrains的Clion创建应用程序。
我已经使用Choco安装了OpenCV,所以我拥有C:\ opencv中的所有内容
这是我与Clion的项目
的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函数的未定义错误
你知道它为什么不起作用吗?
答案 0 :(得分:29)
我可以告诉你,我是如何在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
)
这将创建一个安装文件夹,其中包含构建您自己的OpenCV应用程序所需的一切。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中设置的设置。如果您愿意,可以更改它们。
我希望这会有所帮助。
答案 1 :(得分:0)
我只想在 daB0bby 的答案中再添加一件事。很少有Min-GW编译器不支持C ++版本11或更高版本。 OpenCV中的线程需要此版本。因此,我建议使用TDM-GCC Compiler代替MinGW Compiler。安装此编译器,并将路径 C:\ TDM-GCC-64 \ bin 设置为系统的环境变量。