下载OpenCV
这里以OpenCV – 2.4.13.6为例, 这里的2.4.13.6其实应该是2.4.13.7(2.x版本的最新版), 因为官网里有两个2.4.13.6版本, 一个是18年发布的, 一个是19年发布的.
大概是官方搞错了.
以Windows平台为例
安装并配置环境变量
安装
(略)
C:\tools\opencv
配置环境变量
必须要配, 否则你就要将编译好的exe丢到对应bin目录下才能运行
我这里的配的是 C:\tools\opencv\build\x64\vc14\bin
配置开发环境
Visual Studio 2019
新建项目
配置项目属性
亲测在 VS2022 中不需要这一步(配置*d.lib文件名列表), 但在之前版本(VS2019)会报错, 提示找不到链接符号.
*d.lib中的 d 是指 debug, 如果把全部的(*.lib)文件全部列上去了, 可能会导致奇怪的问题, 比如显示图片, 会报错, 和找不到图片报的一样错, 就是因为程序使用了release的库.
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("D:/2222.jpg", CV_LOAD_IMAGE_COLOR);
// 创建显示图文件窗口
namedWindow("Display window", CV_WINDOW_NORMAL);
// 在窗口内显示图文件
imshow("Display window", image);
// 窗口等待按键
waitKey(0);
return 0;
}
CLion
CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(OpenCV)
set(CMAKE_CXX_STANDARD 14)
# 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
add_executable(
OpenCV
main.cpp
)
include_directories(OpenCV C:\tools\opencv\build\include)
target_link_libraries(OpenCV C:\tools\opencv\build\x64\vc14\lib\*d.lib)
main.cpp
#include <opencv2/core/core.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
#define w 400
int main(int argc, char** argv)
{
Mat image = Mat::zeros(w, w, CV_8UC3);
// 绘制矩形
rectangle(image, Point(w / 4, w / 4), Point(3 * w / 4, w / 4 * 3), Scalar(0, 0, 255), 3, 4);
// 绘制圆形
circle(image, Point(w / 2, w / 2), w / 4, Scalar(0, 255, 0), 3, CV_AA);
// 绘制椭圆
ellipse(image, Point(w / 2, w / 2), Size(w / 4, w / 8 * 3), 0, 0, 360, Scalar(255, 0, 0), 3);
ellipse(image, Point(w / 2, w / 2), Size(w / 4, w / 8 * 3), 45, 0, 360, Scalar(255, 0, 0), 3);
ellipse(image, Point(w / 2, w / 2), Size(w / 4, w / 8 * 3), 90, 0, 360, Scalar(255, 0, 0), 3);
ellipse(image, Point(w / 2, w / 2), Size(w / 4, w / 8 * 3), 135, 0, 360, Scalar(255, 0, 0), 3);
// 绘制直线
Point point_left_up = Point(w / 8, w / 8);
Point point_left_bottom = Point(w / 8, w / 8 * 7);
Point point_right_up = Point(w / 8 * 7, w / 8);
Point point_right_bottom = Point(w / 8 * 7, w / 8 * 7);
Scalar line_color = Scalar(100, 255, 89);
int thickness = 3;
line(image, point_left_up, point_left_bottom, line_color, thickness);
line(image, point_right_up, point_right_bottom, line_color, thickness);
line(image, point_left_bottom, point_right_bottom, line_color, thickness);
line(image, point_right_up, point_left_up, line_color, thickness);
line(image, point_left_up, point_right_bottom, line_color, thickness);
line(image, point_left_bottom, point_right_up, line_color, thickness);
// 用线画点
line(image, Point(w / 2, w / 2), Point(w / 2, w / 2), line_color, 40);
// 用圆画点
//circle(image, Point(w / 2, w / 2), 50, Scalar(100, 200, 255), -1);
circle(image, Point(w / 2, w / 2), 50, line_color, -1);
namedWindow("image", CV_WINDOW_AUTOSIZE);
imshow("image", image);
// 窗口等待按键
waitKey(0);
return 0;
}