LINUX.ORG.RU

Помогите с написанием софта на питоне


0

0

Предыстория: Привезли на работу ip-камеры наблюдения, притом тупые до безумия и неудобные по интерфейсу (все что с ними работает (тормозит)||(слабо по возможностям)). И тут поручили мне отнести кольцо в жерло вулкана... Ой :) не в то окно Вобщем надо написать софт для работы с ним Выбор пал на питон (миксованые клиенты win+lin) Как камера работает впринципе уже обнаружили (hex + прошивка + wireshark) но не можем сделать для нее gui и систему обнаружения(слежения если потянет) за обьектом

Прозьба: надо сделать gui который отображал jpeg картинку, обновляя ее через определенное время (пробовал pyGtk но не смог с ним разобраться). Использовать qt, tk нельзя надо находить разницу между 2мя кадрами(картинками в режиме слежения) и выдавать ее в виде цифрового значения попробовать находить голову человека в кадре (либо деление кадра на 9 частей и сравнение их с частями следующего)

Помогите бедному системному инженеру, у меня всего 3 недели Буду благодарен всему что посоветуете!

Ответ на: комментарий от Davidov

Спасибо за ссылки, правда там метод что я и описал как возможный :) Разница изображений, перевод в градацию серого и выборка наиболее светлых участков

Я не знаю как в PyGtk заставить обновить весь виджет или отдельные его части. Гуглил но не особо помогло... :(

Red_Lion
() автор топика
Ответ на: комментарий от Davidov

Уже давно читал, Davidov, но всеравно большое спасибо

P.S. я уже указал что я использую string а не файлы? а то просто мог забыть, 2 ночи работал :)

Red_Lion
() автор топика
Ответ на: комментарий от Davidov

Была статья с ресурса IBM, на тему, как сделать motion-tracking, там использовался sdl и ещё какая-то либа. Соответвенно, на C написать подпрограмму6 которая будет сравнивать разницу 2-х кадров, сделать из неё модуль для python, и использовать его в своей поделке на pygtk.

krum
()
Ответ на: комментарий от krum

Ну собственно со всем кроме слежения разобрались Работает 'на ура', только из-за проблем с камерой иногда падает Image Вообщето тотже Image умеет брать разницу кртинкаи и переводить ее в чб вариант + анализировать пиксели Этого вполне хватит по моему мнению для motion-detection и впоследсвии тракинга

Red_Lion
() автор топика
Ответ на: комментарий от Red_Lion

Нахождение движения:

def motion(im1, im2, sen=30): global mvd_tbl size=(32, 24) mvd_tbl=[] imP1 = im1.resize(size).convert('L') imP2 = im2.resize(size).convert('L') idraw = im2.copy() draw = ImageDraw.Draw(idraw) i=0 while i!=(size[1]*size[0]): y = i / size[0] x = i % size[0] ras=abs(imP1.getpixel((x,y))-imP2.getpixel((x,y))) if ras>sen: draw.rectangle([ ( (x*20), (y*20) ), ( ((x+1)*20), ((y+1)*20) ) ]) mvd_tbl.append((x,y)) i += 1 return idraw

im1, im2 - текущие и предыдущее изображение sen - степень чувствительности idraw - текущая картинка с пометкой на обьекты движения mvd_tbl- таблица с зонами где найдены изменения написано для im[1-2] с разрешенеи 640-480 использует Image, ImageDraw

Red_Lion
() автор топика
Ответ на: комментарий от Red_Lion

Извиняюсь, не проверил как будет код выглядеть :)

def motion(im1, im2, sen=30):
 global mvd_tbl
 size=(32, 24)
 mvd_tbl=[]
 imP1 = im1.resize(size).convert('L')
 imP2 = im2.resize(size).convert('L')
 idraw = im2.copy()
 draw = ImageDraw.Draw(idraw)
 i=0
 while i!=(size[1]*size[0]): 
  y = i / size[0]
  x = i % size[0]
  ras=abs(imP1.getpixel((x,y))-imP2.getpixel((x,y)))
  if ras>sen:
   draw.rectangle([ ( (x*20), (y*20) ), ( ((x+1)*20), ((y+1)*20) ) ])
   mvd_tbl.append((x,y))
  i += 1
 return idraw

Red_Lion
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.