пятница, 23 декабря 2011 г.

XML сериализация для QT

Я не удержался и взялся изобретать этот велосипед. Или лучше сказать - небольшое велосипедное колесо. После написания кода для первой серии я нашёл вот такую штуку. Но это не то, о чём мечталось. А хотелось иметь что-то похожее на .net xml serialization. Поиски готовых решений я немедленно  прекратил, поскольку появилось серьёзное опасение, что поиски могут увенчаться успехом. Также с самого начала я почуял, что такая штука для QT никому не нужна. Но и эти предчувствия я отважно проигнорировал.

пятница, 27 мая 2011 г.

среда, 23 марта 2011 г.

Страшный изоморфизм

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

Хабрапроба

Засабмитил недавно в Хабрахабр-песочницу свой перевод одной хорошей статьи от Steve Pavlina об управлении временем. Как бы узнать, читают ли эту песочницу захабренные? Вообще, начинаю понимать, что шансов на инвайт с таким творчеством мало. Может, как-нибудь что-то ближе к IT напишу.

пятница, 18 марта 2011 г.

Загрузка PNG файлов в OpenCV. PyPNG спешит на помощь

Приключения продолжаются. На этот раз я обнаружил, что OpenCV игнорирует alpha-канал при загрузке изображений функцией cvLoadImage, и никакие CV_LOAD_IMAGE_UNCHANGED не помогут. Достаточно взглянуть на исходный файл grfmt_png.cpp (версия библиотеки 2.2), и надежды испаряются. Вот, например, из этого файла текстово-разъяснительно и потом кодово-мнемонично:

/* observation: png_read_image() writes 400 bytes beyond
* end of data when reading a 400x118 color png
* "mpplus_sand.png".  OpenCV crashes even with demo
* programs.  Looking at the loaded image I'd say we get 4
* bytes per pixel instead of 3 bytes per pixel.  Test
* indicate that it is a good idea to always ask for
* stripping alpha..  18.11.2004 Axel Walthelm
*/
png_set_strip_alpha( png_ptr );


Небольшое гугление показывает, что это уже давно баян и что есть радикальное решение проблемы, состоящее в корректировке кода и перекомпиляции библиотеки. Но мы же не станем этого делать. Изобретём более некрасивый путь и спасём наши скриптёныши от страшного "mpplus_sand.png"!
Устанавливаем PyPNG, и в дальнейшем вместо cv.LoadImage загружаем данные изображений средствами этого пакета, конвертируя их в объекты IplImage.

понедельник, 28 февраля 2011 г.

cv.CamShift

У меня работает OpenCV 2.2, а не какая-нибудь OpenCV 2.1! Но имеющийся в комплекте пример "camshift.py" не работает. Не работает и любой вызов функции cv.CamShift. Возникает ошибка внутри библиотеки OpenCV из-за каких-то проблем в параметрах. Пришлось делать этот вызов самостоятельно.

суббота, 5 февраля 2011 г.

Arules не рулит

Я предположил, что решению моей задачи может помочь machine learning. Передо мной страшный и могучий R. Библиотека arules - то, что мне нужно.