Romiks 6 Жалоба Опубликовано April 3, 2011 Можно ли как-нибудь ускорить cvPyrMeanShiftFiltering, время выполнения около 500мс, никуда не годится вызываю так: cvPyrMeanShiftFiltering(dst, segm, 20, 40, 7); грузит проц всего на 50% OpenCV2.2 P.S. у меня видюхи Nvidia 8800GTS и на ноуте 9700M GT можно ли их заюзать для ускорения???? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 Можно ли как-нибудь ускорить cvPyrMeanShiftFiltering, время выполнения около 500мс, никуда не годится вызываю так: cvPyrMeanShiftFiltering(dst, segm, 20, 40, 7); грузит проц всего на 50% OpenCV2.2 P.S. у меня видюхи Nvidia 8800GTS и на ноуте 9700M GT можно ли их заюзать для ускорения???? Могу только ссылку подкинуть (без GPU): http://coewww.rutgers.edu/riul/research/code/EDISON/index.html В opencv эта ф-ция пока не реализована на GPU. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 мне нужно именно в OpenCV, а если IPP подключить, это поможет? или как-нибудь сделать чтоб она использовала проц на 100%, ведь это ускорение почти в два раза! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 IPP и TBB теоретически должны помочь, но практически не замерял. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 Потестил на стандартном примере, 50-70 процентов занято каждое ядро, при этом окно тормозит жутко. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 Извиняюсь. Удалил дубль, а исчезло 2 сообщения, что-то все таки не так с форумом. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 сохранилось в буфере) да с форумом чёто не так, сначала не отправляется, потом уходит сразу два, гляньте логи на серваке, у меня частенько подбирают пароли к почтовым ящикам, наверно совсем оборзели применил cvPyrSegmentation, результат намного лучше пытаюсь повторить генератор комиксов - _http://robocraft.ru/blog/computervision/484.html только в реальном времени, получилось но меня почемуто контуры цветные получаются, хотя делаю вроде всё также, незнаете как их сделать чёрными, как на картинке? вот код: cvSmooth(frame, frame); cvSplit(frame, b, g, r, 0); cvCanny(b, cb, tresh_one, tresh_two); cvCanny(g, cg, tresh_one, tresh_two); cvCanny(r, cr, tresh_one, tresh_two); cvSub(b, cb, cb); cvSub(g, cg, cg); cvSub(r, cr, cr); cvMerge(cb, cg, cr, 0, dst); cvPyrSegmentation(dst, segm, storage, &comp, level, pyr_tresh_one, pyr_tresh_two); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 Может не cvSub, а cvAnd инвертированного результата cvCanny с каждым слоем делать. Он и выгрызет лишнее. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 с And прикольный результат, остались только контуры, без изображения, и всё равно цветные Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 с And прикольный результат, остались только контуры, без изображения, и всё равно цветные Вот их и вычесть А вообще, я написал с инвертированным результатом Canny . Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 вот так:? cvCanny(b, cb, tresh_one, tresh_two); cvCanny(g, cg, tresh_one, tresh_two); cvCanny(r, cr, tresh_one, tresh_two); cvInvert(cb, cb); cvInvert(cg, cg); cvInvert(cr, cr); cvSub(b, cb, cb); cvSub(g, cg, cg); cvSub(r, cr, cr); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 неа cvInvert это инверсия матрицы, это для решения систем линейных уравнений. Там нужно использовать что то типа cvAbsDiffS со значением равным значению контуров Canny. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 всё сделал, не стал парится с поиском нужной функции, просто написал свою, ищу контуры на сегментированном ч/б изображении и рисую их на цветном, всё оказалось проще простого! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 вот екзешник, если кому надо, спс за советы (только тут без сохранения кадров пока)Comics.zip 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 вот екзешник, если кому надо, спс за советы (только тут без сохранения кадров пока) Заменил DLL-ки на свои с TBB и IPP скорость та-же ~2-3 кадра в секунду на разрешении 640х480. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 тупой вопрос, но как использовать GetOpenFileName чтобы загрузить картинку выбрав её с помощью диалога? ни один пример не работает, ваще туплю седне, чем проще задача тем дольше я над ней парюсь :crazysmile: Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 тупой вопрос, но как использовать GetOpenFileName чтобы загрузить картинку выбрав её с помощью диалога? ни один пример не работает, ваще туплю седне, чем проще задача тем дольше я над ней парюсь :crazysmile: MSDN-овский пример тоже не работает? Что конкретно не пашет? Кстати, там Unicode вроде. Скорее всего больше подойдет GetOpenFileNameA. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 кое как сделал чтоб ваще работало, но с русскими символами не работает вот до такого извращения додумался: wchar_t fn[512]; fn[0] = '\0'; fn[1] = '\0'; ofn.lpstrFile = fn ; ... GetOpenFileName(&ofn); char *flnm = new char[512]; for(int i = 0; i < 512; ++i) flnm[i] = fn[i]; flnm[511] = '\0'; cout << flnm; maybe = cvLoadImage(flnm); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 3, 2011 А если GetOpenFileNameA использовать, она не w_char, а char строку должна выдавать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 3, 2011 работает, спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romiks 6 Жалоба Опубликовано April 4, 2011 вот последняя версия, если запустить PhotoMode.bat то будет обрабатываться фотка а не видео с камеры, Enter сохранить кадр или фотку, O открыть новую фотку, если фотка больше 640x480 то она ужимается, и обрабатывается в сжатом видео но при сохранении обрабатывается фотка в полном разрешении с теме-же параметрами, большая фотка при сохранении обрабатывается секунд 5-10 исходник: http://locv.ru/wiki/Comicscomics.zip Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
noonv 3 Жалоба Опубликовано April 8, 2011 смотрю, вам тоже очень понравились получающиеся "комиксы" Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах