私たちの関心の最初の犠牲者は、ビデオ監視システムになります。
何、なぜ、なぜ
すでに書いたように、私たちのシステムの中核はパソコンです。 すべてのシステムをそれに接続し、すべてを管理するのは彼です。 鉄の要件は必要なタスクに由来しますが、私たちにはあまり強力ではありません。 私の場合、主な要件はシステムユニットのノイズレスと小型化でした。 選択はキャンディーバーに落ちました。 Intel Atom-ノイズを減らすためのSSD上のプロセッサおよびハードドライブとして。 オペレーティングシステムはUbuntu Linuxです。 それは合理的な十分なお金で判明しました。 次のようになります。
羊に戻りましょう。 すでに書いたように、単純なUSB Webカメラに基づいてビデオ監視を構築します。USBカメラの追加オプションにはマイクを使用できます。 たとえば、次のとおりです。
接続するには、アクティブアンプ付きの長いUSBケーブル、またはフェライトリング付き5メートルケーブルと電源付きUSBハブを使用しました。 これらの要素の品質には特に注意を払う必要があります。
これは、ビデオ監視システムを編成するのに十分です。 また、アナログカメラとIPカメラを接続する可能性を検討することもできますが、ソリューションのコストと利用可能な材料から始めました:)
ソフトウェア
カメラがコンピュータに接続されていると想定しています-これは問題を引き起こさないはずです。 最も興味深い部分であるソフトウェア部分に移りましょう。
最新のカメラを購入した場合、OSがそれを見るために追加のジェスチャーは必要ないでしょう。 私の場合、4つのWebカメラがシステムに接続されています。 これを確認してください:
nix@nix-boss:~$ ls /dev/video*
/dev/video0 /dev/video1 /dev/video2 /dev/video3
どうやら、システムはそれらを識別しました。 USBコネクタに接続する以外のアクションは実行しませんでした。 出力にデバイスが表示されない場合、ほとんどの場合、カメラのドライバーをグーグルで検索する必要があります。
私自身は、カメラからビデオストリームを撮影するのではなく、1秒に1回撮影することにしました。 利点は明らかです:
- WEB経由で表示するときのトラフィックが少ない(GPRS経由で携帯電話から見たい場合があります)
- 将来的に-画像分析に基づく動き検出器と、独自の目的でのニューラルネットワークの使用
これらすべてのために、 motionというプログラムを使用します。 Ubuntuでは、非常に簡単です。
sudo apt-get install motion
設定ファイルはデフォルトで/ etc / motionにあり、奇妙なことにmotion.confと呼ばれています:)
開いて編集し、次のビューに移動します。
daemon off
process_id_file /var/run/motion/motion.pid
setup_mode off
# ,
videodevice /dev/video0
v4l2_palette 8
input 8
norm 0
frequency 0
rotate 0
#
width 320
#
height 240
framerate 2
minimum_frame_time 0
netcam_tolerant_check off
auto_brightness off
brightness 0
contrast 0
saturation 0
hue 0
roundrobin_frames 1
roundrobin_skip 1
switchfilter off
threshold 1500
threshold_tune off
noise_level 32
noise_tune on
despeckle EedDl
smart_mask_speed 0
lightswitch 0
minimum_motion_frames 1
pre_capture 0
post_capture 0
gap 60
max_mpeg_time 0
output_all off
output_normal off
output_motion off
#
quality 50
ppm off
ffmpeg_cap_new off
ffmpeg_cap_motion off
ffmpeg_timelapse 0
ffmpeg_timelapse_mode daily
ffmpeg_bps 500000
ffmpeg_variable_bitrate 0
ffmpeg_video_codec swf
ffmpeg_deinterlace off
#
snapshot_interval 1
locate off
# . -
text_right %Y-%m-%d\n%T-%q
#
text_left CAMERA %t
text_changes off
text_event %Y%m%d%H%M%S
#
text_double on
#
target_dir /opt/data/current/video0
# camera.jpg ( )
snapshot_filename camera
jpeg_filename camera
movie_filename %v-%Y%m%d%H%M%S
timelapse_filename %Y%m%d-timelapse
# -,
webcam_port 0
webcam_quality 50
webcam_motion off
webcam_maxrate 1
webcam_localhost on
webcam_limit 0
control_port 0
control_localhost on
control_html_output on
track_type 0
track_auto off
track_motorx 0
track_motory 0
track_maxx 0
track_maxy 0
track_iomojo_id 0
track_step_angle_x 10
track_step_angle_y 10
track_move_wait 10
track_speed 255
track_stepsize 40
quiet on
sql_log_image off
sql_log_snapshot on
sql_log_mpeg off
sql_log_timelapse off
sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')
; mysql_db db
; mysql_host localhost
; mysql_user user
; mysql_password password
# 3 ;)
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf
thread /etc/motion/thread3.conf
threadX.confの設定では、すべてのパラメーターはベースに似ており、必要な行のみが変更されています
videodevice /dev/video1
text_left CAMERA 2
target_dir /opt/data/current/video1
つまり OSのカメラデバイスのアドレス、画像のテキスト、保存ディレクトリ。
スペースを取りすぎないように、構成ファイルからコメントを削除しました。 オリジナルのモーション設定ファイルでそれらを見ることができます。 詳細に説明されています。 元の構成ファイルからの変更には、コメントがタグ付けされています。
次に、必要なディレクトリを作成し、構成の機能を確認する必要があります。
nix@nix-boss:~$ mkdir /opt/data/current/video0 ( )
nix@nix-boss:~$ sudo motion -c /etc/motion/motion.conf
カメラフォルダーに1つずつ移動し、 camera.jpgファイルを表示します。 すべてが正しく行われると、カメラからさまざまな画像が表示されます。
合計
この記事では、カメラから画像を受け取り、1秒間に1つの画像を別のディレクトリに保存する方法を学びました。
次のパートでは、音声を合成して理解するためにシステムを教える方法について説明します。
ご清聴ありがとうございました;)
UPD: パート3