[Среда конфигурации] Visual Studio настраивает OpenCV

Оглавление

1. Окружающая среда

2. Загрузите и настройте OpenCV.

3. Создайте проект Visual Studio.

В-четвертых, настройте проект Visual Studio.

5. Напишите и скомпилируйте программу OpenCV.

6. Устраните ошибки, о которых сообщает CMake при компиляции OpenCV.

7. Библиотека собранная мной


1. Окружающая среда

  • Windows 11 Домашняя китайская версия
  • Сообщество Microsoft Visual Studio 2022 (64-разрядная версия) — текущая версия 17.5.3
  • CMake — 3.24.1
  • OpenCV — 4.8.0

2. Загрузите и настройте OpenCV.

1. Установите OpenCV под Windows, обычно есть два варианта

  1. Используйте предварительно скомпилированные двоичные библиотеки (рекомендуется): это наиболее распространенный метод. Вы можете скачать скомпилированную бинарную версию с официального сайта OpenCV, не компилируя ее самостоятельно. Эти предварительно скомпилированные библиотеки уже содержат файлы заголовков OpenCV и файлы библиотек и могут использоваться непосредственно в проектах.
    1. Перейдите на страницу выпусков OpenCV , чтобы загрузить последнюю версию (выберите версию для Windows).
    2. Разархивируйте скачанный файл по указанному пути, и вы получите папку.Например, opencv/build,содержимое такое.
  2. Компиляция OpenCV из исходного кода (расширенный вариант). Вы можете выбрать этот метод, если вам нужна расширенная конфигурация, пользовательские параметры компиляции или вы хотите скомпилировать исходный код OpenCV в Windows. Но это зачастую сложнее и требует больше времени и ресурсов.
    1. Сначала загрузите исходный код из репозитория OpenCV на GitHub .
    2. Чтобы установить CMake, вы можете   загрузить и установить последнюю версию CMake с официального сайта CMake . Это инструмент для настройки и генерации скомпилированных проектов.
    3. Откройте графический интерфейс CMake и выберите каталог исходного кода OpenCV в разделе «Где находится исходный код». В разделе «Где собирать двоичные файлы» выберите целевую папку для генерации результатов компиляции.Обычно рекомендуется создать папку с именем «build» вне каталога исходного кода.
    4. Нажмите кнопку «Настроить». CMake предложит выбрать генератор, выбрать подходящую версию Visual Studio (например, Visual Studio 2022), выбрать количество бит, которое необходимо сгенерировать (по умолчанию — 64-бит).
    5. В процессе компиляции CMake могут появиться некоторые красные сообщения об ошибках . Решения см. в последнем разделе. ( Эти ошибки можно пропустить )
    6. Параметры конфигурации. В процессе настройки CMake вы можете при необходимости установить различные параметры, такие как тип компиляции, путь установки, включение/выключение модулей и т. д. Обязательно настройте его в соответствии с вашими потребностями. ( Поиск в Интернете )
    7. Нажмите кнопку «Создать», это создаст файл проекта Visual Studio.
    8. Откройте созданный файл проекта Visual Studio (обычно файл .sln) или нажмите «Открыть проект» в интерфейсе CMake.
    9. В Visual Studio выберите конфигурацию «Выпуск» или «Отладка» (выберите по мере необходимости), затем найдите файл «CMakeTargets > INSTALL», щелкните файл правой кнопкой мыши и выберите параметр «Построить». Это скомпилирует OpenCV.

    10. После завершения компиляции скомпилированный файл библиотеки OpenCV можно найти в созданной целевой папке (обычно в этой build/installпапке).
    11. В соответствии с описанным выше методом вы можете самостоятельно собрать 64/32-битные библиотеки Release/Debug.

2. Настройте переменные среды OpenCV.

  1. Используйте сочетание клавиш Win + R, чтобы открыть диалоговое окно «Выполнить». В диалоговом окне «Выполнить» введите sysdm.cplи нажмите Enter. Откроется вкладка «Дополнительно» окна «Свойства системы», откуда вы сможете получить доступ к конфигурации переменных среды.
  2. Добавьте путь к папке OpenCV bin, чтобы система могла найти файл OpenCV DLL. Например: D:\Program Files\OpenCV\build\x64\vc16\bin(пожалуйста, замените в соответствии с вашим фактическим путем).
  3. Добавьте путь к папке OpenCV lib, чтобы компилятор и компоновщик могли найти файлы библиотеки OpenCV. Например: D:\Program Files\OpenCV\build\x64\vc16\lib(пожалуйста, замените в соответствии с вашим фактическим путем).
  4. Обязательно нажмите кнопку «ОК» и закройте все окна.
  5. Откройте командную строку и введите команду opencv_version, чтобы проверить, успешно ли настроен OpenCV. Если конфигурация прошла успешно, будет выведен номер версии OpenCV, указывающий, что библиотека OpenCV может нормально работать в командной строке.

3. Создайте проект Visual Studio.

Используйте Visual Studio, чтобы создать новый проект C++ или открыть существующий проект.

В-четвертых, настройте проект Visual Studio.

1. Следуйте проекту для настройки (рекомендуется).

  1. Откройте свойства проекта, выберите «Свойства конфигурации > Каталог VC++», а затем настройте «Каталог включения» как папку, содержащую OpenCV ( include) opencv\build\include, и настройте «Каталог библиотеки» как libпапку, содержащую OpenCV ( opencv\build\x64\vc16\lib).
  2. В разделе «Свойства конфигурации > Компоновщик > Ввод» в разделе «Дополнительные зависимости» добавьте файл библиотеки OpenCV, который вы хотите использовать (например, opencv_world480d.lib).

2. Глобальная конфигурация (не рекомендуется)

  1. Нажмите кнопку просмотра «Просмотр» на панели инструментов. После развертывания нажмите «Другие окна» > «Диспетчер свойств».
  2. Тогда вы получите четыре разных режима. По умолчанию в каждом каталоге режима будет несколько системных файлов. Здесь настройте текущий проект на использование этих скомпилированных библиотек способом, указанным выше для системного файла «xxx.64.user». Конфигурация свойств, выполненная в этих системных файлах, является глобальной конфигурацией.

  3. Вы также можете добавить новый файл свойств, а затем настроить текущий проект для использования этих скомпилированных библиотек, как указано выше. Файл свойств сохраняется в текущем каталоге проекта (эта конфигурация соответствует проекту и может использоваться для четырех режимов. Добавить новый файл свойств).

5. Напишите и скомпилируйте программу OpenCV.

Вот некоторые основные процедуры обработки изображений.

1. Загрузка и отображение изображений. Создайте программу, которая может загружать файлы изображений и отображать их в окне.

#include <iostream>
#include <opencv2/opencv.hpp>

//#pragma comment(lib,"opencv_world480d.lib")

int main() {
    // 加载图像
    cv::Mat image = cv::imread("your_image.jpg");
    if (image.empty()) {
        std::cerr << "Error: Could not read image file." << std::endl;
        return -1;
    }

    // 显示图像
    cv::imshow("My Image", image);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}

2. Изменение размера изображений. Напишите код, который может загружать изображения и изменять их размер.

#include <iostream>
#include <opencv2/opencv.hpp>

//#pragma comment(lib,"opencv_world480d.lib")

int main() {
    // 加载图像
    cv::Mat image = cv::imread("your_image.jpg");
    if (image.empty()) {
        std::cerr << "Error: Could not read image file." << std::endl;
        return -1;
    }

    // 调整图像大小
    cv::Size newSize(800, 600);
    cv::Mat resizedImage;
    cv::resize(image, resizedImage, newSize);

    // 显示调整后的图像
    cv::imshow("Resized Image", resizedImage);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}

3. Применение фильтров . Узнайте, как применять распространенные фильтры изображений, например фильтры Гаусса.

#include <iostream>
#include <opencv2/opencv.hpp>

//#pragma comment(lib,"opencv_world480d.lib")

int main() {
    // 加载图像
    cv::Mat image = cv::imread("your_image.jpg");
    if (image.empty()) {
        std::cerr << "Error: Could not read image file." << std::endl;
        return -1;
    }

    // 应用高斯滤波
    cv::Mat blurredImage;
    cv::GaussianBlur(image, blurredImage, cv::Size(5, 5), 0);

    // 显示模糊图像
    cv::imshow("Blurred Image", blurredImage);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}

4. Обнаружение краев . Создайте программу, которая обнаруживает края изображений.

#include <iostream>
#include <opencv2/opencv.hpp>

//#pragma comment(lib,"opencv_world480d.lib")

int main() {
    // 加载图像
    cv::Mat image = cv::imread("your_image.jpg");
    if (image.empty()) {
        std::cerr << "Error: Could not read image file." << std::endl;
        return -1;
    }

    // 检测边缘
    cv::Mat edges;
    cv::Canny(image, edges, 100, 200);

    // 显示边缘图像
    cv::imshow("Edge Image", edges);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}

5. Преобразование изображений . Попрактикуйтесь в преобразовании цветового пространства изображения, например, преобразовании цветных изображений в изображения в оттенках серого и преобразовании изображений из цветового пространства RGB в цветовое пространство HSV.

#include <iostream>
#include <opencv2/opencv.hpp>

//#pragma comment(lib,"opencv_world480d.lib")

int main() {
    // 加载图像
    cv::Mat image = cv::imread("your_image.jpg");
    if (image.empty()) {
        std::cerr << "Error: Could not read image file." << std::endl;
        return -1;
    }

    // 转换为灰度图像
    cv::Mat grayImage;
    cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);

    // 显示灰度图像
    cv::imshow("Gray Image", grayImage);
    cv::waitKey(0);
    cv::destroyAllWindows();

    // 转换为HSV颜色空间
    cv::Mat hsvImage;
    cv::cvtColor(image, hsvImage, cv::COLOR_BGR2HSV);

    // 分离通道
    std::vector<cv::Mat> channels;
    cv::split(hsvImage, channels);

    // 显示H、S、V通道
    cv::imshow("Hue Channel", channels[0]); // H通道
    cv::imshow("Saturation Channel", channels[1]); // S通道
    cv::imshow("Value Channel", channels[2]); // V通道
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}

6. Чтобы глубже понять OpenCV, на официальном сайте также представлено множество примеров кода, как показано ниже.

6. Устраните ошибки, о которых сообщает CMake при компиляции OpenCV.

1. Проблема позиционирования

  • Следующая ошибка указывает на то, что обнаруженная версия интерпретатора Python не соответствует ожидаемой версии, но эту ошибку можно проигнорировать и оставить в покое.
  • Но позже будет много ошибок типа следующей, то есть необходимые файловые ресурсы невозможно скачать по указанной ссылке.Подробнее смотрите в файле build/CMakeDownloadLog.txt.
  • Назначение файла CMakeDownloadLog.txt:
    • Файл CMakeDownloadLog.txt — это файл журнала, созданный инструментом CMake. Он в основном используется для записи подробной информации, когда CMake загружает зависимости и внешние ресурсы.
    • Файл CMakeDownloadLog.txt полезен для устранения неполадок и отладки проблем с загрузкой зависимостей. Если при настройке или сборке проекта с помощью CMake не удается загрузить зависимости или возникают проблемы, связанные с внешними ресурсами, вы можете просмотреть этот файл для получения дополнительной информации для дальнейшего устранения проблемы.
  • После открытия файла CMakeDownloadLog.txt будет отображена следующая информация, каждый раздел которой представляет собой ошибку, которую мы хотим устранить :

2. Проанализируйте проблему

  • Сначала проанализируйте, что означают эти сообщения об ошибках, и тогда мы легко сможем решить проблему.Отрывок из одного из параграфов показан ниже (остальные - аналогичные проблемы )
  • Содержимое красного поля поясняется следующим образом:
    • #do_copy : это команда, которая загружает файл с именем «ffmpeg_version.cmake» по указанному URL-адресу и копирует его в локальный каталог «D:/opencv/build/3rdparty/ffmpeg». А хэш-значение MD5 файла установлено как «8862c87496e2e8c375965e1277dee1c7».
    • #missing : это сообщение, указывающее, что файл с именем «ffmpeg_version.cmake» не найден в указанном локальном каталоге.
    • #check_md5 : это сообщение, которое проверяет хэш MD5 файла с именем «ffmpeg_version.cmake» для проверки целостности файла.
    • #mismatch_md5 : это сообщение, указывающее, что хеш-значение MD5 локального файла не соответствует ожидаемому значению «d41d8cd98f00b204e9800998ecf8427e», что указывает на то, что файл может быть поврежден или отсутствует.
    • #delete : это команда, которая удаляет файлы в каталоге локального кэша.
    • #cmake_download : это команда, которая пытается повторно загрузить файл с указанного URL-адреса.
    • #try 1 : это сообщение о том, что это первая попытка загрузки файла.
    • Таким образом:do_copy , попробуйте загрузить файл с именем «ffmpeg_version.cmake» по указанному URL-адресу и сохраните его в локальном каталоге «D:/opencv/build/3rdparty/ffmpeg». Сначала он проверяет, существует ли уже файл «ffmpeg_version.cmake» в локальном каталоге, но он не найден ( missing). Затем он пытается проверить, есть ли файл, соответствующий загруженному файлу, в каталоге локального кэша на основе хеша MD5 файла, но обнаруживает, что хэш MD5 не соответствует ( ) mismatch_md5. Затем он попытался загрузить файл по указанному URL-адресу и с первой попытки обнаружил проблемы с сетью.
  • Конкретное сообщение об ошибке:
    • # timeout on name lookup is not supportedЭто сообщение об ошибке указывает на то, что во время разрешения имен DNS произошла ошибка тайм-аута. CMake попытался разрешить имя хоста «raw.githbusercontent.com», но не смог подключиться к хосту, поскольку время разрешения истекло.
    • # getaddrinfo(3) failed for raw.githubusercontent.com:443Это сообщение об ошибке указывает на невозможность получить информацию об адресе хоста, где «raw.githubusercontent.com:443» — это имя хоста и порт, которые необходимо разрешить.
    • # Could not resolve host: raw.githubusercontent.comВ этом сообщении об ошибке говорится, что имя хоста «raw.githubusercontent.com» не может быть разрешено.
    • # Closing connection 0Это сообщение о том, что соединение с хостом закрыто.
    • Резюме : Основная причина этих ошибок заключается в том, что CMake не может найти имя хоста «raw.githubusercontent.com» посредством разрешения DNS и, следовательно, не может подключиться к серверу GitHub для загрузки необходимого файла «ffmpeg_version.cmake».

3. Решите проблему

  • Было установлено, что причина проблемы в том, что файл ffmpeg_version.cmake не удалось загрузить.После того, как браузер ввел указанный URL, отобразилась следующая информация :
  • Следующий шаг — загрузить файл ffmpeg_version.cmake, затем перезаписать файл D:/opencv/source/.cache/ffmpeg/8862c87496e2e8c375965e1277dee1c7-ffmpeg_version.cmake и затем скомпилировать его.

7. Библиотека собранная мной

Ссылка Baidu Netdisk: Библиотеку OpenCV, скомпилированную VS2022, можно использовать в четырех режимах (Release32, Release64, Debug32, Debug64).

おすすめ

転載: blog.csdn.net/weixin_43729127/article/details/132635245