使用vscode多源文件結合opencv庫進行開發
vscode插件只需要安裝
1、新建文件夾OPENCVTEST
2、添加文件main.cpp
內容如下:
#include "Lib/OpencvTest.h"
#include <iostream>
int main()
{
OpencvTest* opencvtest = new OpencvTest();
opencvtest->readImage();
delete opencvtest;
return 0;
}
3、新建文件夾Lib
4、添加文件OpencvTest.cpp與OpencvTest.h
內容如下:
OpencvTest.h
#pragma once
class OpencvTest
{
public:
void readImage();
OpencvTest();
~OpencvTest();
};
OpencvTest.cpp
#include "OpencvTest.h"
#include <iostream>
#include <opencv2/opencv.hpp>
void OpencvTest::readImage()
{
cv::Mat img = cv::imread("lena.jpg");
cv::imshow("ImageShow", img);
cv::waitKey(0);
}
OpencvTest::OpencvTest()
{
std::cout << "OpencvTest Object Constructed" << std::cout;
}
OpencvTest::~OpencvTest()
{
std::cout << "OpencvTest Object Destructed" << std::cout;
}
5、F5運行,選擇C++(GDB/LLDB),生成launch.json文件,用以下內容替換該文件內容
(注意修改miDebuggerPath的值,同樣的如果用qt提供的mingw,我這裏修改爲D:/Qt/Qt5.7.0/Tools/mingw530_32/bin/gdb.exe同樣可以調試運行)
//launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"program": "${file}.o",
"args": [],
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"preLaunchTask": "g++",
"linux": {
"miDebuggerPath": "/usr/bin/gdb",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"miDebuggerPath": "D:/Qt/Qt5.7.0/Tools/mingw530_32/bin/gdb.exe",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
}
]
}
//tasks.json
{
"version": "0.1.0",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${file}.o"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
7、編寫CMakeList.txt
每一個包含源文件的目錄中都要編寫CMakeLists.txt
根目錄中的CMakeLists.txt,一般程序入口在此。內容如下:
# 使用CMake Tools插件(可選,如果這個項目去到一個沒有這個插件的機器也同樣可以生成項目)
include(CMakeToolsHelpers OPTIONAL)
# CMake 最低版本號要求
cmake_minimum_required(VERSION 2.8)
# 項目名稱
project(OpencvTest)
# 查找當前目錄下的所有源文件
# 並將名稱保存到 DIR_ROOT_SRCS變量
aux_source_directory(. DIR_ROOT_SRCS)
# 添加 Lib子目錄
add_subdirectory(Lib)
# 指定生成目標
add_executable(OpencvTest main.cpp ${DIR_ROOT_SRCS})
# 添加鏈接庫
target_link_libraries(OpencvTest OpencvLib)
子目錄中的Lib/CMakeLists.txt,一般將子目錄中的源文件編譯爲靜態鏈接庫。內容如下:
opencv鏈接庫是使用cmake用mingw編譯出來的,可參考 http://blog.csdn.net/qq_15947787/article/details/77600099
opencv頭文件以及鏈接庫路徑可根據實際情況進行修改
include(CMakeToolsHelpers OPTIONAL)
cmake_minimum_required(VERSION 2.8)
#添加opencv頭文件的搜索路徑
INCLUDE_DIRECTORIES(D:/opencv2.4.9/build/include/opencv)
INCLUDE_DIRECTORIES(D:/opencv2.4.9/build/include/opencv2)
INCLUDE_DIRECTORIES(D:/opencv2.4.9/build/include)
# 查找路徑下的所有源文件
aux_source_directory(. DIR_LIB_SRCS)
# 生成鏈接庫
add_library(OpencvLib ${DIR_LIB_SRCS})
# 添加鏈接庫
TARGET_LINK_LIBRARIES(OpencvLib D:/opencv2.4.9/build/x86/mingw/lib/libopencv_core249.dll.a)
TARGET_LINK_LIBRARIES(OpencvLib D:/opencv2.4.9/build/x86/mingw/lib/libopencv_highgui249.dll.a)
TARGET_LINK_LIBRARIES(OpencvLib D:/opencv2.4.9/build/x86/mingw/lib/libopencv_imgproc249.dll.a)
8、在vscode終端下輸入(找不到終端?F5調試就彈出來了)
cmake -G "MinGW Makefiles"
mingw32-make
9、運行程序
在vscode終端下輸入(也就是剛纔CMakeLists.txt中的project項目名稱,前提要在opencvtest中放入lena.jpg這張圖)
.\OpencvTest.exe
最終的工程截圖: