Создание среды обучения OpenCV

C++ OpenCV

СкачатьOpenCV

здесь сOpenCV — 2.4.13.6Например, здесь2.4.13.6На самом деле это должно быть2.4.13.7(последняя версия версии 2.х), потому что на официальном сайте их две2.4.13.6версия, одна была выпущена в 2018 году, а другая - в 2019 году.

image.png

image.png

Возможно, чиновник ошибся.

отWindowsПлатформа как пример

image.png

Адрес загрузки версии OpenCV для Windows

Документация OpenCV 2.4.13.6

Установить и настроить переменные среды

Установить

(немного)

C:\tools\opencv

Настроить переменные среды

Он должен совпадать, иначе вам придется скинуть скомпилированный exe в соответствующий каталог bin для запуска

image.png

Что у меня есть здесьC:\tools\opencv\build\x64\vc14\bin image.png

Настроить среду разработки

Visual Studio 2019

Новый проект

image.png

Настройка свойств проекта

image.png

image.png

Протестировано в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;
}