OpenCV 2 Computer Vision Application Programming Cookbook / Изучаем OpenCV: Играем с изображениями
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Подготавливаемся oneassasin 03.07.13 в 13:08 |
|
|
Запускаем Qt Creator, который будем используем для создания GUI приложения. Также можно создать GUI приложение без этого инструмента, но использование графической IDE, в которые виджеты можно просто drag'n'drop'ать самый простой способ создать хорошо выглядящий GUI. wuffur 28.08.13 в 19:02 |
||
|
Как это сделать... oneassasin 03.07.13 в 13:08 |
||
|
Выберети в меню Создать новый проект(Create New Project), wuffur 28.08.13 в 19:04 |
||
|
Задайте имя и место расположения вашего проекта. Если вы затем нажмёте кнопку Next, то увидите что модуль QtGUI проверяется. Так как на не нужно больше других модулей, то поэтому вы можете нажать Finish . Таким образом вы создадите новый проект. Кроме того, чтобы использовать файл проекта ( .pro) и файл main.cpp , вы увидите два файла главных окон (mainwindow), определяющих класс, который содержит ваше GUI окно. Вы также найдёте файл у которого расширение .ui, то самое которое описывает UI вывод(layout). На самом деле, если два раза по нему нажмёте правой кнопкой мыши, то увидите текущий интерфейс как представлено здесь: wuffur 28.08.13 в 19:10 |
||
|
Также вы можете сюда drag-and-drop'нуть (перетащить) различные виджеты. Положите две кнопки Push, как мы делали в предыдущем премере. Вы можете изменить их размер, и изменить размер окна, чтобы он выглядел хорошо. Вам также следует переименовать кнопки label. Просто нажмите на мышку и вставьте любое имя по вашему выбору. wuffur 28.08.13 в 19:14 |
||
|
Добавим теперь сигнальный метод, чтобы управлять событием нажатия на кнопку. Нажмите на правую кнопку мыши по первой кнопке и выберете пункт Go to slot... в контекстном меню. Список возможных сигналов выводится на экран так как показано на следующем скриншоте: wuffur 28.08.13 в 19:32 |
||
|
Просто выберете сигнал clicked(). Он управляет событием нажатия кнопки. Когда вы это сделаете, тогда вас перенесёт в файл mainwindow.cpp. Это метод слота, который вызывается при получении сигнала click(): wuffur 08.10.13 в 18:04 |
||
|
#include "mainwindow.h" oneassasin 03.07.13 в 13:08 |
||
|
Чтобы иметь возможность вывести изображение на экран и затем провести какое-то преобразование над ним, нам нужно опредилить переменную-член класса cv::Mat. Это производится в заголовочном файле класса MainWindow. Так выглядит теперь заголовочный файл: wuffur 08.10.13 в 18:06 |
||
|
#include <QMainWindow> oneassasin 03.07.13 в 13:09 |
||
|
Отметим, что мы также включили заголовочные файлы core.hpp и highgui.hpp. Как мы уже выучили в предыдущем рецепте(практике), мы теперь должны забыть о том, чтобы редактировать файл проекта, чтобы добавить информацию библиотеки OpenCV. wuffur 08.10.13 в 18:09 |
||
|
OpenCV код может потом быть добавлен. Эта первая кнопка открывает исходное изображение. Это производится при добавлении следующего кода к связанному с ним методу слота: wuffur 08.10.13 в 18:10 |
||
|
void MainWindow::on_pushButton_clicked() oneassasin 03.07.13 в 13:09 |
||
|
Вы можете создать новый слот, если нажмёте правой кнопкой мыши по второй кнопке. Этот второй слот произведет некоторые преобразования над выбранным входным изображением. Следующий код просто перевернёт изображение: wuffur 08.10.13 в 18:11 |
||
|
void MainWindow::on_pushButton_2_clicked() oneassasin 03.07.13 в 13:09 |
||
|
Теперь вы можете скомпилировать и запустить эту программу и ваш двухкнопочный графический интерфейс GUI позволит вам выбрать изображение и произвести над ним преобразования. wuffur 08.10.13 в 18:12 |
||
|
Входные и выходные изображения отображаются на двух окнах, выводящихся поверх экрана(highgui), которые мы определили. wuffur 08.10.13 в 18:13 |
||
|
Как это работает... oneassasin 03.07.13 в 13:09 |
||
|
private slots: oneassasin 03.07.13 в 13:09 |
||
|
ui->pushButton_2->setEnabled(false); oneassasin 03.07.13 в 13:09 |
||
|
if (image.data) { oneassasin 03.07.13 в 13:10 |
||
|
Более... oneassasin 03.07.13 в 13:10 |
||
|
void MainWindow::on_pushButton_2_clicked() oneassasin 03.07.13 в 13:11 |
||
|
Так же смотрите oneassasin 03.07.13 в 13:11 |
||
