Axis VAPIX (HTTP API)
Набор HTTP API для управления камерами Axis: http://www.axis.com/techsup/cam_servers/dev/cam_http_api_index.php
Hatred's Log Place
Набор HTTP API для управления камерами Axis: http://www.axis.com/techsup/cam_servers/dev/cam_http_api_index.php
Изначально задача была: извлечь из изображения область ограниченную полигоном, при этом оставшаяся часть изображения должна залиться “прозрачным” цветом (сиречь размер в пикселях не поменяется). Но как оказалось, можно ещё более обобщить эту задачу - вытаскивать произвольные области изображения.
Рассматриваемый инструмент - ImageMagick или GraphicsMagick.
Решение нашлось тут: http://studio.imagemagick.org/pipermail/magick-users/2006-March/017281.html
Коротко суть: на основе исходного изображения (по сути используется только, что бы задать размеры) создаётся временное изображение-маска и нарисованной фигурой/фигурами которые образуются, если их обрисовать полигоном. Остальные пиксели на маске - прозрачные. Далее маска накладывается на исходное изображение и извлекается только нужная его часть…
Теперь на примере.
Есть изображение:

Нужно вырезать область, заданную полигоном (для простоты - треугольник) с координатами: (10,10)-(400,200)-(100,200)
Шаг 1. Делаем маску:
convert screenshot.png -matte -fill none -draw 'color 0,0 reset' -fill white -draw 'polygon 10,10,400,200,100,200' polygon.png
Получаем следующее (картинка белая :simple_smile: ):

Шаг 2. Вырезаем область:
convert screenshot.png -matte polygon.png -compose DstIn -composite out.png
Получаем чего желаем:

Команды рисования можно посмотреть тут: http://www.imagemagick.org/Usage/draw/
Библиотеки/рекомендации для работы с JSON.
Просто прекрасно:
Почему сейчас таких фильмов нет?
Накатило, решил найти исходники этой программки. Что делает? Да просто берёт и играет mp3 файл. Чем знаменита? :) А тем, что это мой первый проигрыватель mp3 на Linux, который попался мне случайно на купленном диске во Владивостоке, во времена, когда у меня не было интернета и в своём городе-посёлке я был единственным пингвиноводом.
Source1 (на этом сайте) | Source2 | Где найдено
Никаких внешних зависимостей, исходники на чистом Си, в распакованном виде - 290Кб.
PS при сборке на современных системах нужно будет применить такой патч:
--- /home/hatred/download/tmp/mp3/amp-0.7.6/guicontrol.c 1997-08-23 22:30:51.000000000 +1100
@@ -375,7 +375,8 @@
break;
case GETHDR_SYN: warn("oops, we're out of sync.<br/>n");
break;
1. default:
+ default:
+ ;
}
break;
}
по сути, после default:, поставить точку с запятой :simple_smile:
Что бы при использовании плагина googleplusone совместно с BlogTNG при попытке “поделиться” постом в Google+ вставлялся не абы какой текст, а то, что вам нужно, следует внести некоторые модификации в используемый вами шаблон.
Читаем: http://newsru.com/russia/10jan2012/games.html
Пацреоты - фперёт!
Просто слов нет. Круто. Красиво. В основном - Владивосток и его окрестности.
hypot(x, y) создан, что бы не звать sqrt(x*x + y*y)
Подробности:
http://freetype.sourceforge.net/david/reliable-c.html
UPD 2014-06-09: сменил ссылку, прошлая убилась
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Frzahg%2Frzahgicprog2.htm - iSeries Information Center, версия 5, выпуск 3
В разделе есть примеры кода, достаточно много про сокеты написано (в том числе и мультикаст и SSL).
find_package(Boost REQUIRED COMPONENTS system)
undefined reference to 'boost::tss_cleanup_implemented()'?thread, а в случае windows (и кроскомпиляции): thread_win32, т.е. необходимо писать что-то вроде такого кода:
set(BOOST_COMPONENTS
program_options
system)
# Boost thread library is different on Win/Linux
if(WIN32)
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} thread_win32)
else()
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} thread)
endif()
...
find_package(Boost COMPONENTS ${BOOST_COMPONENTS} REQUIRED)
add_definitions(-DBOOST_THREAD_USE_LIB=1)
namespace boost {
void tss_cleanup_implemented() { }
}
Если коротко: функиця заполняет структуру типа in_addr, преобразуя сведения о хосте из строкового представления.
У winsock2 нет такой функции. Есть более продвинутый аналог inet_pton, в POSIX он тоже есть, да вот только mingw про неё в windows не знает. Пичалька.
Поэтому делаем примерно следующее:
#ifdef WIN32
static int inet_aton(const char *cp, struct in_addr *inp)
{
if (cp == 0 || inp == 0)
{
return -1;
}
unsigned long addr = inet_addr(cp);
if (addr == INADDR_NONE || addr == INADDR_ANY)
{
return -1;
}
inp->s_addr = addr;
}
#endif
не верх совершенства и корректности, но для моих целей работало.
По сути парочка дополнений для этой статьи: http://mingw-cross.sourceforge.net/cross_debug.html
Задача: есть win32 приложение, собранное путём кросс-компиляции при помощи cmake и mingw32, нужно запустить его в отладчике и поймать на чём оно падает.
Необходимый инстументарий:
Бинарную версию нужно будет распаковать, например в ~/bin/mingw32-gdb-win32/. В директорию ~/bin/mingw32-gdb-win32/bin/ при этом следует сделать следующие симлинки:
cd ~/bin/mingw32-gdb-win32/bin/
ln -s /usr/i486-mingw32/bin/libexpat-1.dll .
ln -s /usr/i486-mingw32/bin/libiconv-2.dll .
ln -s /usr/i486-mingw32/bin/libintl-8.dll .
Всё. Впринципе всё готово для отладки.
1. Запускаем клиент gdb:```bash
i486-mingw32-gdb test-app.exe
Ну и по сути всё, дальше делаем всё как при обычной отладке при помощи gdb, устанавливаем точки останова, смотрим данные, делаем бектрейсы и т.д. Единственная разница, что для запуска приложения нужно использовать не команду `run`, а команду `continue`, но собственно если забудете или перепутаете - отладчик вам подскажет.
Если программа что-то выбрасывает на консоль, вы увидете это в окне wineconsole.
Если захочется графической отладки, смотреть в сторону ddd и ссылку, что я давал в начале поста.