roboforum.ru

Технический форум по робототехнике.

Задача по OpenCV.

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Задача по OpenCV.

Сообщение Кирилл91 » 28 янв 2013, 14:44

Ребят, кому не сложно, помогите пожалуйста с решением задачи.
Вывести изображение:
1. При первом одинарном щелчке убрать синий цвет.
2. При втором убрать красный цвет.
3. При третьем щелчке зеленый.
4. при двойном-восстановить изображение.

По возможности, объясните ход задачи, пожалуйста. Заранее благодарен.
Кирилл91
 
Сообщения: 3
Зарегистрирован: 28 янв 2013, 14:35

Re: Задача по OpenCV.

Сообщение noonv » 28 янв 2013, 18:04

ёпрст.

загрузка и вывод картинки - http://robocraft.ru/blog/computervision/268.html
обработка мышки - http://robocraft.ru/blog/computervision/278.html

разбить на каналы - cvCvtPixToPlane()

профит.
Аватара пользователя
noonv
 
Сообщения: 601
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: Задача по OpenCV.

Сообщение Кирилл91 » 29 янв 2013, 08:55

Я не могу собрать все это в кучу, не могли бы вы подробнее объяснить?
Кирилл91
 
Сообщения: 3
Зарегистрирован: 28 янв 2013, 14:35

Re: Задача по OpenCV.

Сообщение noonv » 29 янв 2013, 10:50

просто пробуйте и спрашивайте если что-то конкретно не получается.
Аватара пользователя
noonv
 
Сообщения: 601
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: Задача по OpenCV.

Сообщение Кирилл91 » 29 янв 2013, 13:16

На данный момент у меня получился следующий код:
Код: Выделить всёРазвернуть
#include "stdafx.h"
#include "stdafx.h"
#include "stdlib.h"
#include "highgui.h"
#include "cv.h"

using namespace cv;

int _tmain(int argc, CHAR** argv[])
{
    namedWindow("Input image",1);
   Mat image = imread("D:\\1.jpg"); //загрузка входного изображения
   imshow( "Input image", image );
   waitKey(0);
   vector<Mat> chan(4);
   split(image, chan);
   //разбиение image на три канала channle
   imshow( "Input image", chan[0] ); waitKey(0);
   imshow( "Input image", chan[1] ); waitKey(0);
   imshow( "Input image", chan[2] ); waitKey(0);
   //Теперь переименуем синий канал в красный, а красный в синий
   chan.push_back(chan[0]);
   chan[0]=chan[2];
   chan[2]=chan[3];
   //Объединим каналы
   merge(chan, image);
   //Посмотрим результат замены
   imshow( "Input image", image);waitKey(0);
   //Измеим значение яркости канала с синим цветом
   chan[0]+=100;
   chan[2]*=1.1;
   merge(chan, image );
   imshow( "Input image", image);waitKey(0);
   destroyWindow("new");
}

в какую часть кода мне нужно вставить обработку мышки?
Кирилл91
 
Сообщения: 3
Зарегистрирован: 28 янв 2013, 14:35

Re: Задача по OpenCV.

Сообщение noonv » 29 янв 2013, 14:16

порядок такой:
1. повесить обработчик мышки,
2. обработку картинки (которая зависит от нажатия мышки) обернуть в цикл.

стандартный пример - http://code.opencv.org/projects/opencv/ ... lldemo.cpp
только если не нужно ждать нажатия клавиши - нужно внутри цикла вместо waitKey(0); писать waitKey(33);
Аватара пользователя
noonv
 
Сообщения: 601
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

cron