Bug 260 - Added average pixel difference to statistics
git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@1910 e3e1d417-86f3-4887-817a-d78f3d33393f
This commit is contained in:
parent
0d4474c6d9
commit
131ed30d7a
|
@ -323,6 +323,7 @@ CREATE TABLE Stats (
|
||||||
ZoneId int(10) unsigned NOT NULL default '0',
|
ZoneId int(10) unsigned NOT NULL default '0',
|
||||||
EventId int(10) unsigned NOT NULL default '0',
|
EventId int(10) unsigned NOT NULL default '0',
|
||||||
FrameId int(10) unsigned NOT NULL default '0',
|
FrameId int(10) unsigned NOT NULL default '0',
|
||||||
|
PixelDiff tinyint(3) unsigned NOT NULL default '0',
|
||||||
AlarmPixels int(10) unsigned NOT NULL default '0',
|
AlarmPixels int(10) unsigned NOT NULL default '0',
|
||||||
FilterPixels int(10) unsigned NOT NULL default '0',
|
FilterPixels int(10) unsigned NOT NULL default '0',
|
||||||
BlobPixels int(10) unsigned NOT NULL default '0',
|
BlobPixels int(10) unsigned NOT NULL default '0',
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
-- Add support for linked monitors
|
-- Add support for linked monitors
|
||||||
--
|
--
|
||||||
alter table Monitors add column LinkedMonitors varchar(255) NOT NULL default '' after Enabled;
|
alter table Monitors add column LinkedMonitors varchar(255) NOT NULL default '' after Enabled;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Revise some defaults and sizes
|
||||||
|
--
|
||||||
alter table Monitors modify column Device varchar(64) not null default '';
|
alter table Monitors modify column Device varchar(64) not null default '';
|
||||||
alter table Monitors modify column Host varchar(64) not null default '';
|
alter table Monitors modify column Host varchar(64) not null default '';
|
||||||
alter table Monitors modify column Port varchar(8) not null default '';
|
alter table Monitors modify column Port varchar(8) not null default '';
|
||||||
|
@ -14,8 +18,17 @@ alter table Monitors modify column LabelX smallint(5) unsigned not null default
|
||||||
alter table Monitors modify column LabelY smallint(5) unsigned not null default 0;
|
alter table Monitors modify column LabelY smallint(5) unsigned not null default 0;
|
||||||
alter table Monitors modify column MaxFPS decimal(5,2) default NULL;
|
alter table Monitors modify column MaxFPS decimal(5,2) default NULL;
|
||||||
update Monitors set MaxFPS = NULL where MaxFPS = 0.00;
|
update Monitors set MaxFPS = NULL where MaxFPS = 0.00;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Add monitor specific alarm max FPS
|
||||||
|
--
|
||||||
alter table Monitors add column AlarmMaxFPS decimal(5,2) default NULL after MaxFPS;
|
alter table Monitors add column AlarmMaxFPS decimal(5,2) default NULL after MaxFPS;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Add average pixel difference to stats
|
||||||
|
--
|
||||||
|
alter table Stats add column PixelDiff tinyint(3) unsigned NOT NULL default '0' after FrameId;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Add some new monitor presets
|
-- Add some new monitor presets
|
||||||
--
|
--
|
||||||
|
|
|
@ -49,6 +49,7 @@ void Zone::Setup( Monitor *p_monitor, int p_id, const char *p_label, ZoneType p_
|
||||||
Debug( 1, ( "Initialised zone %d/%s - %d - %dx%d - Rgb:%06x, CM:%d, MnAT:%d, MxAT:%d, MnAP:%d, MxAP:%d, FB:%dx%d, MnFP:%d, MxFP:%d, MnBS:%d, MxBS:%d, MnB:%d, MxB:%d", id, label, type, polygon.Width(), polygon.Height(), alarm_rgb, check_method, min_pixel_threshold, max_pixel_threshold, min_alarm_pixels, max_alarm_pixels, filter_box.X(), filter_box.Y(), min_filter_pixels, max_filter_pixels, min_blob_pixels, max_blob_pixels, min_blobs, max_blobs ));
|
Debug( 1, ( "Initialised zone %d/%s - %d - %dx%d - Rgb:%06x, CM:%d, MnAT:%d, MxAT:%d, MnAP:%d, MxAP:%d, FB:%dx%d, MnFP:%d, MxFP:%d, MnBS:%d, MxBS:%d, MnB:%d, MxB:%d", id, label, type, polygon.Width(), polygon.Height(), alarm_rgb, check_method, min_pixel_threshold, max_pixel_threshold, min_alarm_pixels, max_alarm_pixels, filter_box.X(), filter_box.Y(), min_filter_pixels, max_filter_pixels, min_blob_pixels, max_blob_pixels, min_blobs, max_blobs ));
|
||||||
|
|
||||||
alarmed = false;
|
alarmed = false;
|
||||||
|
pixel_diff = 0;
|
||||||
alarm_pixels = 0;
|
alarm_pixels = 0;
|
||||||
alarm_filter_pixels = 0;
|
alarm_filter_pixels = 0;
|
||||||
alarm_blob_pixels = 0;
|
alarm_blob_pixels = 0;
|
||||||
|
@ -101,7 +102,7 @@ Zone::~Zone()
|
||||||
void Zone::RecordStats( const Event *event )
|
void Zone::RecordStats( const Event *event )
|
||||||
{
|
{
|
||||||
static char sql[BUFSIZ];
|
static char sql[BUFSIZ];
|
||||||
snprintf( sql, sizeof(sql), "insert into Stats set MonitorId=%d, ZoneId=%d, EventId=%d, FrameId=%d, AlarmPixels=%d, FilterPixels=%d, BlobPixels=%d, Blobs=%d, MinBlobSize=%d, MaxBlobSize=%d, MinX=%d, MinY=%d, MaxX=%d, MaxY=%d, Score=%d", monitor->Id(), id, event->Id(), event->Frames()+1, alarm_pixels, alarm_filter_pixels, alarm_blob_pixels, alarm_blobs, min_blob_size, max_blob_size, alarm_box.LoX(), alarm_box.LoY(), alarm_box.HiX(), alarm_box.HiY(), score );
|
snprintf( sql, sizeof(sql), "insert into Stats set MonitorId=%d, ZoneId=%d, EventId=%d, FrameId=%d, PixelDiff=%d, AlarmPixels=%d, FilterPixels=%d, BlobPixels=%d, Blobs=%d, MinBlobSize=%d, MaxBlobSize=%d, MinX=%d, MinY=%d, MaxX=%d, MaxY=%d, Score=%d", monitor->Id(), id, event->Id(), event->Frames()+1, pixel_diff, alarm_pixels, alarm_filter_pixels, alarm_blob_pixels, alarm_blobs, min_blob_size, max_blob_size, alarm_box.LoX(), alarm_box.LoY(), alarm_box.HiX(), alarm_box.HiY(), score );
|
||||||
if ( mysql_query( &dbconn, sql ) )
|
if ( mysql_query( &dbconn, sql ) )
|
||||||
{
|
{
|
||||||
Error(( "Can't insert event stats: %s", mysql_error( &dbconn ) ));
|
Error(( "Can't insert event stats: %s", mysql_error( &dbconn ) ));
|
||||||
|
@ -122,6 +123,8 @@ bool Zone::CheckAlarms( const Image *delta_image )
|
||||||
int diff_height = diff_image->Height();
|
int diff_height = diff_image->Height();
|
||||||
int diff_stride = diff_width * diff_image->Colours();
|
int diff_stride = diff_width * diff_image->Colours();
|
||||||
|
|
||||||
|
unsigned long pixel_diff_count = 0;
|
||||||
|
|
||||||
int alarm_lo_x = 0;
|
int alarm_lo_x = 0;
|
||||||
int alarm_hi_x = 0;
|
int alarm_hi_x = 0;
|
||||||
int alarm_lo_y = 0;
|
int alarm_lo_y = 0;
|
||||||
|
@ -176,8 +179,9 @@ bool Zone::CheckAlarms( const Image *delta_image )
|
||||||
{
|
{
|
||||||
if ( *ppoly && (*pdiff > min_pixel_threshold) && (!max_pixel_threshold || (*pdiff < max_pixel_threshold)) )
|
if ( *ppoly && (*pdiff > min_pixel_threshold) && (!max_pixel_threshold || (*pdiff < max_pixel_threshold)) )
|
||||||
{
|
{
|
||||||
*pdiff = WHITE;
|
|
||||||
alarm_pixels++;
|
alarm_pixels++;
|
||||||
|
pixel_diff_count += abs(*pdiff);
|
||||||
|
*pdiff = WHITE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -195,7 +199,9 @@ bool Zone::CheckAlarms( const Image *delta_image )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Debug( 5, ( "Got %d alarmed pixels, need %d -> %d", alarm_pixels, min_alarm_pixels, max_alarm_pixels ));
|
if ( pixel_diff_count && alarm_pixels )
|
||||||
|
pixel_diff = pixel_diff_count/alarm_pixels;
|
||||||
|
Debug( 5, ( "Got %d alarmed pixels, need %d -> %d, avg pixel diff %d", alarm_pixels, min_alarm_pixels, max_alarm_pixels, pixel_diff ));
|
||||||
if ( config.record_diag_images )
|
if ( config.record_diag_images )
|
||||||
{
|
{
|
||||||
static char diag_path[PATH_MAX] = "";
|
static char diag_path[PATH_MAX] = "";
|
||||||
|
@ -702,7 +708,7 @@ bool Zone::CheckAlarms( const Image *delta_image )
|
||||||
image = 0;
|
image = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug( 1, ( "%s: Alarm Pixels: %d, Filter Pixels: %d, Blob Pixels: %d, Blobs: %d, Score: %d", Label(), alarm_pixels, alarm_filter_pixels, alarm_blob_pixels, alarm_blobs, score ));
|
Debug( 1, ( "%s: Pixel Diff: %d, Alarm Pixels: %d, Filter Pixels: %d, Blob Pixels: %d, Blobs: %d, Score: %d", Label(), pixel_diff, alarm_pixels, alarm_filter_pixels, alarm_blob_pixels, alarm_blobs, score ));
|
||||||
}
|
}
|
||||||
return( true );
|
return( true );
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,7 @@ protected:
|
||||||
|
|
||||||
// Outputs/Statistics
|
// Outputs/Statistics
|
||||||
bool alarmed;
|
bool alarmed;
|
||||||
|
int pixel_diff;
|
||||||
int alarm_pixels;
|
int alarm_pixels;
|
||||||
int alarm_filter_pixels;
|
int alarm_filter_pixels;
|
||||||
int alarm_blob_pixels;
|
int alarm_blob_pixels;
|
||||||
|
@ -126,6 +127,7 @@ public:
|
||||||
inline void ResetStats()
|
inline void ResetStats()
|
||||||
{
|
{
|
||||||
alarmed = false;
|
alarmed = false;
|
||||||
|
pixel_diff = 0;
|
||||||
alarm_pixels = 0;
|
alarm_pixels = 0;
|
||||||
alarm_filter_pixels = 0;
|
alarm_filter_pixels = 0;
|
||||||
alarm_blob_pixels = 0;
|
alarm_blob_pixels = 0;
|
||||||
|
|
|
@ -201,7 +201,7 @@ $jws = array(
|
||||||
'restarting' => array( 'w'=>250, 'h'=>150 ),
|
'restarting' => array( 'w'=>250, 'h'=>150 ),
|
||||||
'settings' => array( 'w'=>200, 'h'=>225 ),
|
'settings' => array( 'w'=>200, 'h'=>225 ),
|
||||||
'state' => array( 'w'=>300, 'h'=>120 ),
|
'state' => array( 'w'=>300, 'h'=>120 ),
|
||||||
'stats' => array( 'w'=>680, 'h'=>200 ),
|
'stats' => array( 'w'=>740, 'h'=>200 ),
|
||||||
'timeline' => array( 'w'=>760, 'h'=>500 ),
|
'timeline' => array( 'w'=>760, 'h'=>500 ),
|
||||||
'user' => array( 'w'=>280, 'h'=>372 ),
|
'user' => array( 'w'=>280, 'h'=>372 ),
|
||||||
'version' => array( 'w'=>320, 'h'=>140 ),
|
'version' => array( 'w'=>320, 'h'=>140 ),
|
||||||
|
|
|
@ -54,6 +54,7 @@ function closeWindow()
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td colspan="2"><table width="100%" border="0" bgcolor="#7F7FB2" cellpadding="3" cellspacing="1"><tr bgcolor="#FFFFFF">
|
<tr><td colspan="2"><table width="100%" border="0" bgcolor="#7F7FB2" cellpadding="3" cellspacing="1"><tr bgcolor="#FFFFFF">
|
||||||
<td class="smallhead"><?= $zmSlangZone ?></td>
|
<td class="smallhead"><?= $zmSlangZone ?></td>
|
||||||
|
<td class="smallhead" align="center"><?= $zmSlangPixelDiff ?></td>
|
||||||
<td class="smallhead" align="center"><?= $zmSlangAlarmPx ?></td>
|
<td class="smallhead" align="center"><?= $zmSlangAlarmPx ?></td>
|
||||||
<td class="smallhead" align="center"><?= $zmSlangFilterPx ?></td>
|
<td class="smallhead" align="center"><?= $zmSlangFilterPx ?></td>
|
||||||
<td class="smallhead" align="center"><?= $zmSlangBlobPx ?></td>
|
<td class="smallhead" align="center"><?= $zmSlangBlobPx ?></td>
|
||||||
|
@ -70,6 +71,7 @@ if ( count($stats) )
|
||||||
?>
|
?>
|
||||||
<tr bgcolor="#FFFFFF">
|
<tr bgcolor="#FFFFFF">
|
||||||
<td class="text"><?= $stat['ZoneName'] ?></td>
|
<td class="text"><?= $stat['ZoneName'] ?></td>
|
||||||
|
<td class="text" align="center"><?= $stat['PixelDiff'] ?></td>
|
||||||
<td class="text" align="center"><?= sprintf( "%d (%d%%)", $stat['AlarmPixels'], (100*$stat['AlarmPixels']/$stat['Area']) ) ?></td>
|
<td class="text" align="center"><?= sprintf( "%d (%d%%)", $stat['AlarmPixels'], (100*$stat['AlarmPixels']/$stat['Area']) ) ?></td>
|
||||||
<td class="text" align="center"><?= sprintf( "%d (%d%%)", $stat['FilterPixels'], (100*$stat['FilterPixels']/$stat['Area']) ) ?></td>
|
<td class="text" align="center"><?= sprintf( "%d (%d%%)", $stat['FilterPixels'], (100*$stat['FilterPixels']/$stat['Area']) ) ?></td>
|
||||||
<td class="text" align="center"><?= sprintf( "%d (%d%%)", $stat['BlobPixels'], (100*$stat['BlobPixels']/$stat['Area']) ) ?></td>
|
<td class="text" align="center"><?= sprintf( "%d (%d%%)", $stat['BlobPixels'], (100*$stat['BlobPixels']/$stat['Area']) ) ?></td>
|
||||||
|
|
|
@ -482,6 +482,7 @@ $zmSlangPasswordsDifferent = 'Hesla se neshoduj
|
||||||
$zmSlangPaths = 'Cesty';
|
$zmSlangPaths = 'Cesty';
|
||||||
$zmSlangPhoneBW = 'Modem B/W';
|
$zmSlangPhoneBW = 'Modem B/W';
|
||||||
$zmSlangPhone = 'Modem';
|
$zmSlangPhone = 'Modem';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'pixely';
|
$zmSlangPixels = 'pixely';
|
||||||
$zmSlangPlayAll = 'Pøehrát v¹e';
|
$zmSlangPlayAll = 'Pøehrát v¹e';
|
||||||
$zmSlangPleaseWait = 'Prosím èekejte';
|
$zmSlangPleaseWait = 'Prosím èekejte';
|
||||||
|
|
|
@ -482,6 +482,7 @@ $zmSlangPasswordsDifferent = 'Die Passwörter sind unterschiedlich';
|
||||||
$zmSlangPaths = 'Pfade';
|
$zmSlangPaths = 'Pfade';
|
||||||
$zmSlangPhoneBW = 'Tel. B/W';
|
$zmSlangPhoneBW = 'Tel. B/W';
|
||||||
$zmSlangPhone = 'Telephon';
|
$zmSlangPhone = 'Telephon';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'Punkte';
|
$zmSlangPixels = 'Punkte';
|
||||||
$zmSlangPlayAll = 'Alle zeigen';
|
$zmSlangPlayAll = 'Alle zeigen';
|
||||||
$zmSlangPleaseWait = 'Bitte warten';
|
$zmSlangPleaseWait = 'Bitte warten';
|
||||||
|
|
|
@ -483,6 +483,7 @@ $zmSlangPasswordsDifferent = 'Det nye og konfimerede passwords er forskellige'
|
||||||
$zmSlangPaths = 'Stiger';
|
$zmSlangPaths = 'Stiger';
|
||||||
$zmSlangPhoneBW = 'Telefon B/B';
|
$zmSlangPhoneBW = 'Telefon B/B';
|
||||||
$zmSlangPhone = 'Telefon';
|
$zmSlangPhone = 'Telefon';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'pixels';
|
$zmSlangPixels = 'pixels';
|
||||||
$zmSlangPlayAll = 'Afspil Alle';
|
$zmSlangPlayAll = 'Afspil Alle';
|
||||||
$zmSlangPleaseWait = 'Vent venligst';
|
$zmSlangPleaseWait = 'Vent venligst';
|
||||||
|
|
|
@ -115,46 +115,46 @@ $zmSlangAttrNotes = 'Notes';
|
||||||
$zmSlangAttrTime = 'Time';
|
$zmSlangAttrTime = 'Time';
|
||||||
$zmSlangAttrTotalScore = 'Total Score';
|
$zmSlangAttrTotalScore = 'Total Score';
|
||||||
$zmSlangAttrWeekday = 'Weekday';
|
$zmSlangAttrWeekday = 'Weekday';
|
||||||
$zmSlangAutoArchiveEvents = 'Automatically archive all matches';
|
|
||||||
$zmSlangAutoArchiveAbbr = 'Archive';
|
$zmSlangAutoArchiveAbbr = 'Archive';
|
||||||
|
$zmSlangAutoArchiveEvents = 'Automatically archive all matches';
|
||||||
$zmSlangAuto = 'Auto';
|
$zmSlangAuto = 'Auto';
|
||||||
$zmSlangAutoDeleteEvents = 'Automatically delete all matches';
|
|
||||||
$zmSlangAutoDeleteAbbr = 'Delete';
|
$zmSlangAutoDeleteAbbr = 'Delete';
|
||||||
$zmSlangAutoEmailEvents = 'Automatically email details of all matches';
|
$zmSlangAutoDeleteEvents = 'Automatically delete all matches';
|
||||||
$zmSlangAutoEmailAbbr = 'Email';
|
$zmSlangAutoEmailAbbr = 'Email';
|
||||||
$zmSlangAutoExecuteEvents = 'Automatically execute command on all matches';
|
$zmSlangAutoEmailEvents = 'Automatically email details of all matches';
|
||||||
$zmSlangAutoExecuteAbbr = 'Execute';
|
$zmSlangAutoExecuteAbbr = 'Execute';
|
||||||
$zmSlangAutoMessageEvents = 'Automatically message details of all matches';
|
$zmSlangAutoExecuteEvents = 'Automatically execute command on all matches';
|
||||||
$zmSlangAutoMessageAbbr = 'Message';
|
$zmSlangAutoMessageAbbr = 'Message';
|
||||||
|
$zmSlangAutoMessageEvents = 'Automatically message details of all matches';
|
||||||
$zmSlangAutoStopTimeout = 'Auto Stop Timeout';
|
$zmSlangAutoStopTimeout = 'Auto Stop Timeout';
|
||||||
$zmSlangAutoUploadEvents = 'Automatically upload all matches';
|
|
||||||
$zmSlangAutoUploadAbbr = 'Upload';
|
$zmSlangAutoUploadAbbr = 'Upload';
|
||||||
$zmSlangAutoVideoEvents = 'Automatically create video for all matches';
|
$zmSlangAutoUploadEvents = 'Automatically upload all matches';
|
||||||
$zmSlangAutoVideoAbbr = 'Video';
|
$zmSlangAutoVideoAbbr = 'Video';
|
||||||
|
$zmSlangAutoVideoEvents = 'Automatically create video for all matches';
|
||||||
$zmSlangAvgBrScore = 'Avg.<br/>Score';
|
$zmSlangAvgBrScore = 'Avg.<br/>Score';
|
||||||
$zmSlangBadAlarmMaxFPS = 'Alarm Maximum FPS must be a positive integer or floating point value';
|
|
||||||
$zmSlangBadNameChars = 'Names may only contain alphanumeric characters plus hyphen and underscore';
|
|
||||||
$zmSlangBadMaxFPS = 'Maximum FPS must be a positive integer or floating point value';
|
|
||||||
$zmSlangBadRefBlendPerc = 'Reference blendpercentage must be a positive integer';
|
|
||||||
$zmSlangBadDevice = 'Device must be set to a valid value';
|
|
||||||
$zmSlangBadChannel = 'Channel must be set to an integer of zero or more';
|
|
||||||
$zmSlangBadFormat = 'Format must be set to an integer of zero or more';
|
|
||||||
$zmSlangBadWidth = 'Width must be set to a valid value';
|
|
||||||
$zmSlangBadHeight = 'Height must be set to a valid value';
|
|
||||||
$zmSlangBadHost = 'Host must be set to a valid ip address or hostname, do not include http://';
|
|
||||||
$zmSlangBadPort = 'Port must be set to a valid number';
|
|
||||||
$zmSlangBadPath = 'Path must be set to a valid value';
|
|
||||||
$zmSlangBadLabelX = 'Label X co-ordinate must be set to an integer of zero or more';
|
|
||||||
$zmSlangBadLabelY = 'Label Y co-ordinate must be set to an integer of zero or more';
|
|
||||||
$zmSlangBadImageBufferCount = 'Image buffer size must be an integer of 10 or more';
|
|
||||||
$zmSlangBadWarmupCount = 'Warmup frames must be an integer of zero or more';
|
|
||||||
$zmSlangBadPreEventCount = 'Pre event image buffer must be at least zero, and less than image buffer size';
|
|
||||||
$zmSlangBadPostEventCount = 'Post event image buffer must be an integer of zero or more';
|
|
||||||
$zmSlangBadAlarmFrameCount = 'Alarm frame count must be an integer of one or more';
|
$zmSlangBadAlarmFrameCount = 'Alarm frame count must be an integer of one or more';
|
||||||
$zmSlangBadSectionLength = 'Section length must be an integer of 30 or more';
|
$zmSlangBadAlarmMaxFPS = 'Alarm Maximum FPS must be a positive integer or floating point value';
|
||||||
|
$zmSlangBadChannel = 'Channel must be set to an integer of zero or more';
|
||||||
|
$zmSlangBadDevice = 'Device must be set to a valid value';
|
||||||
|
$zmSlangBadFormat = 'Format must be set to an integer of zero or more';
|
||||||
$zmSlangBadFPSReportInterval = 'FPS report interval buffer count must be an integer of 100 or more';
|
$zmSlangBadFPSReportInterval = 'FPS report interval buffer count must be an integer of 100 or more';
|
||||||
$zmSlangBadFrameSkip = 'Frame skip count must be an integer of zero or more';
|
$zmSlangBadFrameSkip = 'Frame skip count must be an integer of zero or more';
|
||||||
|
$zmSlangBadHeight = 'Height must be set to a valid value';
|
||||||
|
$zmSlangBadHost = 'Host must be set to a valid ip address or hostname, do not include http://';
|
||||||
|
$zmSlangBadImageBufferCount = 'Image buffer size must be an integer of 10 or more';
|
||||||
|
$zmSlangBadLabelX = 'Label X co-ordinate must be set to an integer of zero or more';
|
||||||
|
$zmSlangBadLabelY = 'Label Y co-ordinate must be set to an integer of zero or more';
|
||||||
|
$zmSlangBadMaxFPS = 'Maximum FPS must be a positive integer or floating point value';
|
||||||
|
$zmSlangBadNameChars = 'Names may only contain alphanumeric characters plus hyphen and underscore';
|
||||||
|
$zmSlangBadPath = 'Path must be set to a valid value';
|
||||||
|
$zmSlangBadPort = 'Port must be set to a valid number';
|
||||||
|
$zmSlangBadPostEventCount = 'Post event image buffer must be an integer of zero or more';
|
||||||
|
$zmSlangBadPreEventCount = 'Pre event image buffer must be at least zero, and less than image buffer size';
|
||||||
|
$zmSlangBadRefBlendPerc = 'Reference blendpercentage must be a positive integer';
|
||||||
|
$zmSlangBadSectionLength = 'Section length must be an integer of 30 or more';
|
||||||
|
$zmSlangBadWarmupCount = 'Warmup frames must be an integer of zero or more';
|
||||||
$zmSlangBadWebColour = 'Web colour must be a valid web colour string';
|
$zmSlangBadWebColour = 'Web colour must be a valid web colour string';
|
||||||
|
$zmSlangBadWidth = 'Width must be set to a valid value';
|
||||||
$zmSlangBandwidth = 'Bandwidth';
|
$zmSlangBandwidth = 'Bandwidth';
|
||||||
$zmSlangBlobPx = 'Blob Px';
|
$zmSlangBlobPx = 'Blob Px';
|
||||||
$zmSlangBlobs = 'Blobs';
|
$zmSlangBlobs = 'Blobs';
|
||||||
|
@ -387,16 +387,16 @@ $zmSlangMaxZoomSpeed = 'Max Zoom Speed';
|
||||||
$zmSlangMaxZoomStep = 'Max Zoom Step';
|
$zmSlangMaxZoomStep = 'Max Zoom Step';
|
||||||
$zmSlangMediumBW = 'Medium B/W';
|
$zmSlangMediumBW = 'Medium B/W';
|
||||||
$zmSlangMedium = 'Medium';
|
$zmSlangMedium = 'Medium';
|
||||||
$zmSlangMinBlobLtMinFilter = 'Minimum blob area should be less than or equal to minimum filter area';
|
|
||||||
$zmSlangMinFilterLtMinAlarm = 'Minimum filter area should be less than or equal to minimum alarm area';
|
|
||||||
$zmSlangMinAlarmAreaLtMax = 'Minimum alarm area should be less than maximum';
|
$zmSlangMinAlarmAreaLtMax = 'Minimum alarm area should be less than maximum';
|
||||||
$zmSlangMinAlarmAreaUnset = 'You must specify the minimum alarm pixel count';
|
$zmSlangMinAlarmAreaUnset = 'You must specify the minimum alarm pixel count';
|
||||||
$zmSlangMinBlobAreaLtMax = 'Minimum blob area should be less than maximum';
|
$zmSlangMinBlobAreaLtMax = 'Minimum blob area should be less than maximum';
|
||||||
$zmSlangMinBlobAreaUnset = 'You must specify the minimum blob pixel count';
|
$zmSlangMinBlobAreaUnset = 'You must specify the minimum blob pixel count';
|
||||||
|
$zmSlangMinBlobLtMinFilter = 'Minimum blob area should be less than or equal to minimum filter area';
|
||||||
$zmSlangMinBlobsLtMax = 'Minimum blobs should be less than maximum';
|
$zmSlangMinBlobsLtMax = 'Minimum blobs should be less than maximum';
|
||||||
$zmSlangMinBlobsUnset = 'You must specify the minimum blob count';
|
$zmSlangMinBlobsUnset = 'You must specify the minimum blob count';
|
||||||
$zmSlangMinFilterAreaLtMax = 'Minimum filter area should be less than maximum';
|
$zmSlangMinFilterAreaLtMax = 'Minimum filter area should be less than maximum';
|
||||||
$zmSlangMinFilterAreaUnset = 'You must specify the minimum filter pixel count';
|
$zmSlangMinFilterAreaUnset = 'You must specify the minimum filter pixel count';
|
||||||
|
$zmSlangMinFilterLtMinAlarm = 'Minimum filter area should be less than or equal to minimum alarm area';
|
||||||
$zmSlangMinFocusRange = 'Min Focus Range';
|
$zmSlangMinFocusRange = 'Min Focus Range';
|
||||||
$zmSlangMinFocusSpeed = 'Min Focus Speed';
|
$zmSlangMinFocusSpeed = 'Min Focus Speed';
|
||||||
$zmSlangMinFocusStep = 'Min Focus Step';
|
$zmSlangMinFocusStep = 'Min Focus Step';
|
||||||
|
@ -423,8 +423,8 @@ $zmSlangMinZoomStep = 'Min Zoom Step';
|
||||||
$zmSlangMisc = 'Misc';
|
$zmSlangMisc = 'Misc';
|
||||||
$zmSlangMonitorIds = 'Monitor Ids';
|
$zmSlangMonitorIds = 'Monitor Ids';
|
||||||
$zmSlangMonitor = 'Monitor';
|
$zmSlangMonitor = 'Monitor';
|
||||||
$zmSlangMonitorPreset = 'Monitor Preset';
|
|
||||||
$zmSlangMonitorPresetIntro = 'Select an appropriate preset from the list below.<br><br>Please note that this may overwrite any values you already have configured for this monitor.<br><br>';
|
$zmSlangMonitorPresetIntro = 'Select an appropriate preset from the list below.<br><br>Please note that this may overwrite any values you already have configured for this monitor.<br><br>';
|
||||||
|
$zmSlangMonitorPreset = 'Monitor Preset';
|
||||||
$zmSlangMonitors = 'Monitors';
|
$zmSlangMonitors = 'Monitors';
|
||||||
$zmSlangMontage = 'Montage';
|
$zmSlangMontage = 'Montage';
|
||||||
$zmSlangMonth = 'Month';
|
$zmSlangMonth = 'Month';
|
||||||
|
@ -483,6 +483,7 @@ $zmSlangPasswordsDifferent = 'The new and confirm passwords are different';
|
||||||
$zmSlangPaths = 'Paths';
|
$zmSlangPaths = 'Paths';
|
||||||
$zmSlangPhoneBW = 'Phone B/W';
|
$zmSlangPhoneBW = 'Phone B/W';
|
||||||
$zmSlangPhone = 'Phone';
|
$zmSlangPhone = 'Phone';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'pixels';
|
$zmSlangPixels = 'pixels';
|
||||||
$zmSlangPlayAll = 'Play All';
|
$zmSlangPlayAll = 'Play All';
|
||||||
$zmSlangPleaseWait = 'Please Wait';
|
$zmSlangPleaseWait = 'Please Wait';
|
||||||
|
@ -508,8 +509,8 @@ $zmSlangResetEventCounts = 'Reset Event Counts';
|
||||||
$zmSlangReset = 'Reset';
|
$zmSlangReset = 'Reset';
|
||||||
$zmSlangRestarting = 'Restarting';
|
$zmSlangRestarting = 'Restarting';
|
||||||
$zmSlangRestart = 'Restart';
|
$zmSlangRestart = 'Restart';
|
||||||
$zmSlangRestrictedMonitors = 'Restricted Monitors';
|
|
||||||
$zmSlangRestrictedCameraIds = 'Restricted Camera Ids';
|
$zmSlangRestrictedCameraIds = 'Restricted Camera Ids';
|
||||||
|
$zmSlangRestrictedMonitors = 'Restricted Monitors';
|
||||||
$zmSlangReturnDelay = 'Return Delay';
|
$zmSlangReturnDelay = 'Return Delay';
|
||||||
$zmSlangReturnLocation = 'Return Location';
|
$zmSlangReturnLocation = 'Return Location';
|
||||||
$zmSlangRotateLeft = 'Rotate Left';
|
$zmSlangRotateLeft = 'Rotate Left';
|
||||||
|
@ -524,8 +525,8 @@ $zmSlangScale = 'Scale';
|
||||||
$zmSlangScore = 'Score';
|
$zmSlangScore = 'Score';
|
||||||
$zmSlangSecs = 'Secs';
|
$zmSlangSecs = 'Secs';
|
||||||
$zmSlangSectionlength = 'Section length';
|
$zmSlangSectionlength = 'Section length';
|
||||||
$zmSlangSelect = 'Select';
|
|
||||||
$zmSlangSelectMonitors = 'Select Monitors';
|
$zmSlangSelectMonitors = 'Select Monitors';
|
||||||
|
$zmSlangSelect = 'Select';
|
||||||
$zmSlangSelfIntersecting = 'Polygon edges must not intersect';
|
$zmSlangSelfIntersecting = 'Polygon edges must not intersect';
|
||||||
$zmSlangSetLearnPrefs = 'Set Learn Prefs'; // This can be ignored for now
|
$zmSlangSetLearnPrefs = 'Set Learn Prefs'; // This can be ignored for now
|
||||||
$zmSlangSetNewBandwidth = 'Set New Bandwidth';
|
$zmSlangSetNewBandwidth = 'Set New Bandwidth';
|
||||||
|
@ -584,9 +585,9 @@ $zmSlangType = 'Type';
|
||||||
$zmSlangUnarchive = 'Unarchive';
|
$zmSlangUnarchive = 'Unarchive';
|
||||||
$zmSlangUnits = 'Units';
|
$zmSlangUnits = 'Units';
|
||||||
$zmSlangUnknown = 'Unknown';
|
$zmSlangUnknown = 'Unknown';
|
||||||
$zmSlangUpdate = 'Update';
|
|
||||||
$zmSlangUpdateAvailable = 'An update to ZoneMinder is available.';
|
$zmSlangUpdateAvailable = 'An update to ZoneMinder is available.';
|
||||||
$zmSlangUpdateNotNecessary = 'No update is necessary.';
|
$zmSlangUpdateNotNecessary = 'No update is necessary.';
|
||||||
|
$zmSlangUpdate = 'Update';
|
||||||
$zmSlangUseFilterExprsPost = ' filter expressions'; // This is used at the end of the phrase 'use N filter expressions'
|
$zmSlangUseFilterExprsPost = ' filter expressions'; // This is used at the end of the phrase 'use N filter expressions'
|
||||||
$zmSlangUseFilterExprsPre = 'Use '; // This is used at the beginning of the phrase 'use N filter expressions'
|
$zmSlangUseFilterExprsPre = 'Use '; // This is used at the beginning of the phrase 'use N filter expressions'
|
||||||
$zmSlangUseFilter = 'Use Filter';
|
$zmSlangUseFilter = 'Use Filter';
|
||||||
|
@ -621,16 +622,16 @@ $zmSlangWeek = 'Week';
|
||||||
$zmSlangWhiteBalance = 'White Balance';
|
$zmSlangWhiteBalance = 'White Balance';
|
||||||
$zmSlangWhite = 'White';
|
$zmSlangWhite = 'White';
|
||||||
$zmSlangWide = 'Wide';
|
$zmSlangWide = 'Wide';
|
||||||
$zmSlangX = 'X';
|
|
||||||
$zmSlangX10ActivationString = 'X10 Activation String';
|
$zmSlangX10ActivationString = 'X10 Activation String';
|
||||||
$zmSlangX10InputAlarmString = 'X10 Input Alarm String';
|
$zmSlangX10InputAlarmString = 'X10 Input Alarm String';
|
||||||
$zmSlangX10OutputAlarmString = 'X10 Output Alarm String';
|
$zmSlangX10OutputAlarmString = 'X10 Output Alarm String';
|
||||||
$zmSlangX10 = 'X10';
|
$zmSlangX10 = 'X10';
|
||||||
$zmSlangY = 'Y';
|
$zmSlangX = 'X';
|
||||||
$zmSlangYes = 'Yes';
|
$zmSlangYes = 'Yes';
|
||||||
$zmSlangYouNoPerms = 'You do not have permissions to access this resource.';
|
$zmSlangYouNoPerms = 'You do not have permissions to access this resource.';
|
||||||
$zmSlangZoneArea = 'Zone Area';
|
$zmSlangY = 'Y';
|
||||||
$zmSlangZoneAlarmColour = 'Alarm Colour (Red/Green/Blue)';
|
$zmSlangZoneAlarmColour = 'Alarm Colour (Red/Green/Blue)';
|
||||||
|
$zmSlangZoneArea = 'Zone Area';
|
||||||
$zmSlangZoneFilterSize = 'Filter Width/Height (pixels)';
|
$zmSlangZoneFilterSize = 'Filter Width/Height (pixels)';
|
||||||
$zmSlangZoneMinMaxAlarmArea = 'Min/Max Alarmed Area';
|
$zmSlangZoneMinMaxAlarmArea = 'Min/Max Alarmed Area';
|
||||||
$zmSlangZoneMinMaxBlobArea = 'Min/Max Blob Area';
|
$zmSlangZoneMinMaxBlobArea = 'Min/Max Blob Area';
|
||||||
|
|
|
@ -482,6 +482,7 @@ $zmSlangPasswordsDifferent = 'Les 2 mots de passe sont diff
|
||||||
$zmSlangPaths = 'Paths';
|
$zmSlangPaths = 'Paths';
|
||||||
$zmSlangPhoneBW = 'Phone B/W';
|
$zmSlangPhoneBW = 'Phone B/W';
|
||||||
$zmSlangPhone = 'Phone';
|
$zmSlangPhone = 'Phone';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'pixels';
|
$zmSlangPixels = 'pixels';
|
||||||
$zmSlangPlayAll = 'Play All';
|
$zmSlangPlayAll = 'Play All';
|
||||||
$zmSlangPleaseWait = 'Attendez';
|
$zmSlangPleaseWait = 'Attendez';
|
||||||
|
|
|
@ -489,6 +489,7 @@ $zmSlangPasswordsDifferent = 'Le password non coincidono';
|
||||||
$zmSlangPaths = 'Percorsi';
|
$zmSlangPaths = 'Percorsi';
|
||||||
$zmSlangPhoneBW = 'Banda Tel';
|
$zmSlangPhoneBW = 'Banda Tel';
|
||||||
$zmSlangPhone = 'Telefono';
|
$zmSlangPhone = 'Telefono';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'pixels';
|
$zmSlangPixels = 'pixels';
|
||||||
$zmSlangPlayAll = 'Vedi tutti';
|
$zmSlangPlayAll = 'Vedi tutti';
|
||||||
$zmSlangPleaseWait = 'Attendere prego';
|
$zmSlangPleaseWait = 'Attendere prego';
|
||||||
|
|
|
@ -482,6 +482,7 @@ $zmSlangPasswordsDifferent = '
|
||||||
$zmSlangPaths = 'パス';
|
$zmSlangPaths = 'パス';
|
||||||
$zmSlangPhoneBW = '携帯用';
|
$zmSlangPhoneBW = '携帯用';
|
||||||
$zmSlangPhone = 'Phone';
|
$zmSlangPhone = 'Phone';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'ピクセル';
|
$zmSlangPixels = 'ピクセル';
|
||||||
$zmSlangPlayAll = 'Play All';
|
$zmSlangPlayAll = 'Play All';
|
||||||
$zmSlangPleaseWait = 'お待ちください';
|
$zmSlangPleaseWait = 'お待ちください';
|
||||||
|
|
|
@ -483,6 +483,7 @@ $zmSlangPassword = 'Wachtwoord';
|
||||||
$zmSlangPaths = 'Paden';
|
$zmSlangPaths = 'Paden';
|
||||||
$zmSlangPhoneBW = 'Telefoon B/W';
|
$zmSlangPhoneBW = 'Telefoon B/W';
|
||||||
$zmSlangPhone = 'Phone';
|
$zmSlangPhone = 'Phone';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'pixels';
|
$zmSlangPixels = 'pixels';
|
||||||
$zmSlangPlayAll = 'Play All';
|
$zmSlangPlayAll = 'Play All';
|
||||||
$zmSlangPleaseWait = 'wacht A.U.B.';
|
$zmSlangPleaseWait = 'wacht A.U.B.';
|
||||||
|
|
|
@ -483,6 +483,7 @@ $zmSlangPasswordsDifferent = 'Has
|
||||||
$zmSlangPaths = '¦cie¿ki';
|
$zmSlangPaths = '¦cie¿ki';
|
||||||
$zmSlangPhoneBW = 'Tel. prz.';
|
$zmSlangPhoneBW = 'Tel. prz.';
|
||||||
$zmSlangPhone = 'Phone';
|
$zmSlangPhone = 'Phone';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'pikseli';
|
$zmSlangPixels = 'pikseli';
|
||||||
$zmSlangPlayAll = 'Play All';
|
$zmSlangPlayAll = 'Play All';
|
||||||
$zmSlangPleaseWait = 'Proszê czekaæ';
|
$zmSlangPleaseWait = 'Proszê czekaæ';
|
||||||
|
|
|
@ -422,6 +422,7 @@ $zmSlangPassword = 'Senha';
|
||||||
$zmSlangPaths = 'Caminhos';
|
$zmSlangPaths = 'Caminhos';
|
||||||
$zmSlangPhoneBW = 'Discada L/B';
|
$zmSlangPhoneBW = 'Discada L/B';
|
||||||
$zmSlangPhone = 'Phone';
|
$zmSlangPhone = 'Phone';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'pixels';
|
$zmSlangPixels = 'pixels';
|
||||||
$zmSlangPlayAll = 'Play All';
|
$zmSlangPlayAll = 'Play All';
|
||||||
$zmSlangPleaseWait = 'Por Favor Espere';
|
$zmSlangPleaseWait = 'Por Favor Espere';
|
||||||
|
|
|
@ -453,6 +453,7 @@ $zmSlangPasswordsDifferent = 'Cele două parole diferă.';
|
||||||
$zmSlangPaths = 'Cale';
|
$zmSlangPaths = 'Cale';
|
||||||
$zmSlangPhoneBW = 'Phone B/W';
|
$zmSlangPhoneBW = 'Phone B/W';
|
||||||
$zmSlangPhone = 'Phone';
|
$zmSlangPhone = 'Phone';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'Pixeli';
|
$zmSlangPixels = 'Pixeli';
|
||||||
$zmSlangPlayAll = 'Play All';
|
$zmSlangPlayAll = 'Play All';
|
||||||
$zmSlangPleaseWait = 'Vă rugăm aşteptaţi';
|
$zmSlangPleaseWait = 'Vă rugăm aşteptaţi';
|
||||||
|
|
|
@ -483,6 +483,7 @@ $zmSlangPasswordsDifferent = '
|
||||||
$zmSlangPaths = 'ğÕÔÉ';
|
$zmSlangPaths = 'ğÕÔÉ';
|
||||||
$zmSlangPhoneBW = 'ôÅÌÅÆÏÎÎÁÑ ÌÉÎÉÑ';
|
$zmSlangPhoneBW = 'ôÅÌÅÆÏÎÎÁÑ ÌÉÎÉÑ';
|
||||||
$zmSlangPhone = 'Phone';
|
$zmSlangPhone = 'Phone';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = '× ĞÉËÓÅÌÑÈ';
|
$zmSlangPixels = '× ĞÉËÓÅÌÑÈ';
|
||||||
$zmSlangPlayAll = 'Play All';
|
$zmSlangPlayAll = 'Play All';
|
||||||
$zmSlangPleaseWait = 'ğÏÖÁÌÕÊÓÔÁ ĞÏÄÏÖÄÉÔÅ';
|
$zmSlangPleaseWait = 'ğÏÖÁÌÕÊÓÔÁ ĞÏÄÏÖÄÉÔÅ';
|
||||||
|
|
|
@ -482,6 +482,7 @@ $zmSlangPasswordsDifferent = 'L
|
||||||
$zmSlangPaths = 'Sökvägar';
|
$zmSlangPaths = 'Sökvägar';
|
||||||
$zmSlangPhoneBW = 'Mobil B/W';
|
$zmSlangPhoneBW = 'Mobil B/W';
|
||||||
$zmSlangPhone = 'Mobil';
|
$zmSlangPhone = 'Mobil';
|
||||||
|
$zmSlangPixelDiff = 'Pixel Diff';
|
||||||
$zmSlangPixels = 'bildpunkter';
|
$zmSlangPixels = 'bildpunkter';
|
||||||
$zmSlangPlayAll = 'Visa alla';
|
$zmSlangPlayAll = 'Visa alla';
|
||||||
$zmSlangPleaseWait = 'Vänta...';
|
$zmSlangPleaseWait = 'Vänta...';
|
||||||
|
|
Loading…
Reference in New Issue