Технический форум по робототехнике.
Кирилл91 » 28 янв 2013, 14:44
Ребят, кому не сложно, помогите пожалуйста с решением задачи.
Вывести изображение:
1. При первом одинарном щелчке убрать синий цвет.
2. При втором убрать красный цвет.
3. При третьем щелчке зеленый.
4. при двойном-восстановить изображение.
По возможности, объясните ход задачи, пожалуйста. Заранее благодарен.
noonv » 28 янв 2013, 18:04
ёпрст.
загрузка и вывод картинки -
http://robocraft.ru/blog/computervision/268.htmlобработка мышки -
http://robocraft.ru/blog/computervision/278.htmlразбить на каналы -
cvCvtPixToPlane()профит.
Кирилл91 » 29 янв 2013, 08:55
Я не могу собрать все это в кучу, не могли бы вы подробнее объяснить?
noonv » 29 янв 2013, 10:50
просто пробуйте и спрашивайте если что-то конкретно не получается.
Кирилл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");
}
в какую часть кода мне нужно вставить обработку мышки?
noonv » 29 янв 2013, 14:16
порядок такой:
1. повесить обработчик мышки,
2. обработку картинки (которая зависит от нажатия мышки) обернуть в цикл.
стандартный пример -
http://code.opencv.org/projects/opencv/ ... lldemo.cppтолько если не нужно ждать нажатия клавиши - нужно внутри цикла вместо waitKey(0); писать waitKey(33);