MyTetra Share
Делитесь знаниями!
Минимальный пример для проверки сборки проекта с библиотекой OpenCV
Время создания: 20.11.2017 16:47
Автор: Xintrea
Текстовые метки: linux, debian, opencv, сборка, c++, cmake, make
Раздел: Компьютер - Программирование - Компьютерное зрение
Запись: xintrea/mytetra_syncro/master/base/1511185626eg0rwotbjq/text.html на raw.github.com

Установка OpenCV в Debian Linux


... делается простой командой:


apt-get install libopencv-dev


Данный пакет потянет за собой и установку бинарников библиотек OpenCV.



Чтение изображения из файла и отображение его на экране


Код минималистичного примера следующий (во избежении лишних вопросов: да, имя файла с большой буквы):


Файл Main.cpp


#include <opencv2/core/core.hpp>

#include <opencv2/highgui/highgui.hpp>

#include <iostream>

#include "Main.h"


int main (int argc, char *argv[])

{

cv::Mat image=cv::imread("lena.png");


if(image.empty())

{

std::cerr << "Could not load image";

return 1;

}


cv::namedWindow("Image");

cv::imshow("Image", image);

cv::waitKey();


return 0;

}


Необязательно, но можно сделать на будущее файл main.h:


Файл Main.h


#ifndef __MAIN_H__

#define __MAIN_H__


#define PROGRAM_VERSION 1

#define PROGRAM_SUBVERSION 0


#endif // __MAIN_H__


Файл конфигурации системы сборки Cmake:


Файл CMakeLists.txt


cmake_minimum_required(VERSION 2.6)


# Debug or release

# set(CMAKE_BUILD_TYPE Debug)

set(CMAKE_BUILD_TYPE Release)


set(PROJECT opencvstart)

project(${PROJECT})


# Find OpenCV, instead handly write library name to link_libraries() option

find_package( OpenCV REQUIRED )


set(HEADERS

Main.h

)

set(SOURCES

Main.cpp

)


link_libraries(

X11

pthread)


# Add souce file to project for compile

add_executable (${PROJECT} ${HEADERS} ${SOURCES})


target_link_libraries( ${PROJECT} ${OpenCV_LIBS} )



Компиляция и запуск


Выполняются команды в каталоге с файлами проекта:


cmake .

make


В cmake через пробел пишется точка, это нужно чтобы сгенерировался makefile именно для проекта в текущем каталоге.


Потребуется так же изображние lena.png. Можно взять откуда угодно, например с Википедии.


Результат:




Трансформация изображения


Методы трансформации изображений находятся в библиотеке imgproc. Поэтому в начало файла надо добавить:


#include <opencv2/imgproc/imgproc.hpp>


Самая простая трансформация - это размывка картинки. В функцию main(), после команд считывания изображения можно добавить команду:


cv::blur(image, image, cv::Size(10,10));


После чего выводимое изображение будет размыто фильтром blur. Размер матрицы блура будет 10x10.



Борьба с предупреждением Couldn't register with accessibility bus


В момент запуска программы, в консоль будет выдаваться предупреждение:


** (Image:11148): WARNING **: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.


Обсуждение этой ошибки здесь:


https://bbs.archlinux.org/viewtopic.php?id=176663


Для устранения предупреждения, можно в файле /etc/environment прописать команду:


export NO_AT_BRIDGE=1


После чего предупреждение должно исчезнуть. Связано оно с каким-то несоответствием версий GTK библиотек.



Где брать документацию


Официальная страница с документацией находится здесь:


https://docs.opencv.org/2.4/index.html




 
MyTetra Share v.0.65
Яндекс индекс цитирования