Оглавление
2. Загрузите и настройте OpenCV.
3. Создайте проект Visual Studio.
В-четвертых, настройте проект Visual Studio.
5. Напишите и скомпилируйте программу OpenCV.
6. Устраните ошибки, о которых сообщает CMake при компиляции OpenCV.
1. Окружающая среда
- Windows 11 Домашняя китайская версия
- Сообщество Microsoft Visual Studio 2022 (64-разрядная версия) — текущая версия 17.5.3
- CMake — 3.24.1
- OpenCV — 4.8.0
2. Загрузите и настройте OpenCV.
1. Установите OpenCV под Windows, обычно есть два варианта
- Используйте предварительно скомпилированные двоичные библиотеки (рекомендуется): это наиболее распространенный метод. Вы можете скачать скомпилированную бинарную версию с официального сайта OpenCV, не компилируя ее самостоятельно. Эти предварительно скомпилированные библиотеки уже содержат файлы заголовков OpenCV и файлы библиотек и могут использоваться непосредственно в проектах.
- Перейдите на страницу выпусков OpenCV , чтобы загрузить последнюю версию (выберите версию для Windows).
- Разархивируйте скачанный файл по указанному пути, и вы получите папку.Например,
opencv/build,
содержимое такое.- Компиляция OpenCV из исходного кода (расширенный вариант). Вы можете выбрать этот метод, если вам нужна расширенная конфигурация, пользовательские параметры компиляции или вы хотите скомпилировать исходный код OpenCV в Windows. Но это зачастую сложнее и требует больше времени и ресурсов.
- Сначала загрузите исходный код из репозитория OpenCV на GitHub .
- Чтобы установить CMake, вы можете загрузить и установить последнюю версию CMake с официального сайта CMake . Это инструмент для настройки и генерации скомпилированных проектов.
- Откройте графический интерфейс CMake и выберите каталог исходного кода OpenCV в разделе «Где находится исходный код». В разделе «Где собирать двоичные файлы» выберите целевую папку для генерации результатов компиляции.Обычно рекомендуется создать папку с именем «build» вне каталога исходного кода.
- Нажмите кнопку «Настроить». CMake предложит выбрать генератор, выбрать подходящую версию Visual Studio (например, Visual Studio 2022), выбрать количество бит, которое необходимо сгенерировать (по умолчанию — 64-бит).
- В процессе компиляции CMake могут появиться некоторые красные сообщения об ошибках . Решения см. в последнем разделе. ( Эти ошибки можно пропустить )
- Параметры конфигурации. В процессе настройки CMake вы можете при необходимости установить различные параметры, такие как тип компиляции, путь установки, включение/выключение модулей и т. д. Обязательно настройте его в соответствии с вашими потребностями. ( Поиск в Интернете )
- Нажмите кнопку «Создать», это создаст файл проекта Visual Studio.
- Откройте созданный файл проекта Visual Studio (обычно файл .sln) или нажмите «Открыть проект» в интерфейсе CMake.
- В Visual Studio выберите конфигурацию «Выпуск» или «Отладка» (выберите по мере необходимости), затем найдите файл «CMakeTargets > INSTALL», щелкните файл правой кнопкой мыши и выберите параметр «Построить». Это скомпилирует OpenCV.
- После завершения компиляции скомпилированный файл библиотеки OpenCV можно найти в созданной целевой папке (обычно в этой
build/install
папке).- В соответствии с описанным выше методом вы можете самостоятельно собрать 64/32-битные библиотеки Release/Debug.
2. Настройте переменные среды OpenCV.
- Используйте сочетание клавиш Win + R, чтобы открыть диалоговое окно «Выполнить». В диалоговом окне «Выполнить» введите
sysdm.cpl
и нажмите Enter. Откроется вкладка «Дополнительно» окна «Свойства системы», откуда вы сможете получить доступ к конфигурации переменных среды.- Добавьте путь к папке OpenCV
bin
, чтобы система могла найти файл OpenCV DLL. Например:D:\Program Files\OpenCV\build\x64\vc16\bin
(пожалуйста, замените в соответствии с вашим фактическим путем).- Добавьте путь к папке OpenCV
lib
, чтобы компилятор и компоновщик могли найти файлы библиотеки OpenCV. Например:D:\Program Files\OpenCV\build\x64\vc16\lib
(пожалуйста, замените в соответствии с вашим фактическим путем).- Обязательно нажмите кнопку «ОК» и закройте все окна.
- Откройте командную строку и введите команду opencv_version, чтобы проверить, успешно ли настроен OpenCV. Если конфигурация прошла успешно, будет выведен номер версии OpenCV, указывающий, что библиотека OpenCV может нормально работать в командной строке.
3. Создайте проект Visual Studio.
Используйте Visual Studio, чтобы создать новый проект C++ или открыть существующий проект.
В-четвертых, настройте проект Visual Studio.
1. Следуйте проекту для настройки (рекомендуется).
- Откройте свойства проекта, выберите «Свойства конфигурации > Каталог VC++», а затем настройте «Каталог включения» как папку, содержащую OpenCV (
include
)opencv\build\include
, и настройте «Каталог библиотеки» какlib
папку, содержащую OpenCV (opencv\build\x64\vc16\lib
).- В разделе «Свойства конфигурации > Компоновщик > Ввод» в разделе «Дополнительные зависимости» добавьте файл библиотеки OpenCV, который вы хотите использовать (например, opencv_world480d.lib).
2. Глобальная конфигурация (не рекомендуется)
- Нажмите кнопку просмотра «Просмотр» на панели инструментов. После развертывания нажмите «Другие окна» > «Диспетчер свойств».
- Тогда вы получите четыре разных режима. По умолчанию в каждом каталоге режима будет несколько системных файлов. Здесь настройте текущий проект на использование этих скомпилированных библиотек способом, указанным выше для системного файла «xxx.64.user». Конфигурация свойств, выполненная в этих системных файлах, является глобальной конфигурацией.
- Вы также можете добавить новый файл свойств, а затем настроить текущий проект для использования этих скомпилированных библиотек, как указано выше. Файл свойств сохраняется в текущем каталоге проекта (эта конфигурация соответствует проекту и может использоваться для четырех режимов. Добавить новый файл свойств).
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).