Программное обеспечение Sky Camera с обнаружением движения и обнаружением изменения цвета

Я ищу программное обеспечение камеры неба с обнаружением движения (для метеоров и других объектов). Камера подключена к компьютеру (с помощью USB-кабеля), и программное обеспечение должно учитывать вид камеры и иметь следующие функции:

  • Обнаружение движения:
    • При обнаружении движения сохраните видео, содержащее движение.
    • Камера смотрит на все небо, поэтому сохраненное видео должно показывать только область, содержащую движущийся объект.
    • Не должен быть слишком чувствительным. Поскольку Земля движется, звезды непрерывно движутся по небу, и это движение не должно запоминаться.
  • Обнаружение изменения цвета (для полярного сияния и т. д.):
    • Как и в случае с обнаружением движения, при обнаружении изменения он должен сохранять видео при обнаружении изменения цвета, и это видео должно показывать только область, содержащую изменение цвета.

Предпочтительно бесплатное программное обеспечение, но можно использовать программное обеспечение стоимостью до 100 долларов США.

Ответы (1)

Хотя я лично не знаю какого-либо конкретного специализированного программного обеспечения, отвечающего вашим потребностям, я думаю, что вам следует взглянуть на OpenCV и посмотреть, что вы можете придумать.

  • Бесплатно (как бесплатно, так и FLOSS)
  • Кроссплатформенность: Windows, Linux, Android и Mac OS
  • Несколько языков программирования (интерфейсы C++, C, Python, Java и MATLAB), поэтому вы можете использовать то, что вам удобно или что вы можете себе позволить (NB Python и Java бесплатны, у GNU есть бесплатные компиляторы C++ и C).
  • Встроенные алгоритмы обнаружения движения (включая возможность установки пороговых значений).
  • Класс VideoWriter для сохранения ваших результатов
  • Сообщество активных пользователей (подозреваю, включая некоторых студентов/профессиональных астрономов)

Пример обнаружения движения в OpenCV на питоне

Этот пример взят из блога Matthias Stein .

import cv2

def diffImg(t0, t1, t2):
  d1 = cv2.absdiff(t2, t1)
  d2 = cv2.absdiff(t1, t0)
  return cv2.bitwise_and(d1, d2)

cam = cv2.VideoCapture(0)

winName = "Movement Indicator"
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE)

# Read three images first:
t_minus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)

while True:
  cv2.imshow( winName, diffImg(t_minus, t, t_plus) )

  # Read next image
  t_minus = t
  t = t_plus
  t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)

  key = cv2.waitKey(10)
  if key == 27:
    cv2.destroyWindow(winName)
    break

print "Goodbye"