Difference between revisions of "PHP and Gamma values"
From ElphelWiki
m |
(Fixed an error in frames ahead) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 34: | Line 34: | ||
// set gammas array and postpone setting values in the camera | // set gammas array and postpone setting values in the camera | ||
$value = intval($value); | $value = intval($value); | ||
− | + | $gammas["GTAB_R__0816"]=$value; | |
− | + | $gammas["GTAB_G__0816"]=$value; | |
− | + | $gammas["GTAB_GB__0816"]=$value; | |
− | + | $gammas["GTAB_B__0816"]=$value; | |
break; | break; | ||
case "black": | case "black": | ||
// set gammas array and postpone setting values in the camera | // set gammas array and postpone setting values in the camera | ||
$value = intval($value); | $value = intval($value); | ||
− | + | $gammas["GTAB_R__0824"]=$value; | |
− | + | $gammas["GTAB_G__0824"]=$value; | |
− | + | $gammas["GTAB_GB__0824"]=$value; | |
− | + | $gammas["GTAB_B__0824"]=$value; | |
break; | break; | ||
} | } | ||
Line 54: | Line 54: | ||
elphel_gamma_add($gammas["GTAB_G__0816"]/100, $gammas["GTAB_G__0824"]); | elphel_gamma_add($gammas["GTAB_G__0816"]/100, $gammas["GTAB_G__0824"]); | ||
// Apply the values at the frame ahead | // Apply the values at the frame ahead | ||
− | elphel_set_P_arr($gammas,$ahead); | + | elphel_set_P_arr($gammas, elphel_get_frame() + $ahead); |
} | } | ||
// | // | ||
Line 66: | Line 66: | ||
The parameters should be integers: ''1 < gamma <= 100'' and ''0 <= black <= 50''. | The parameters should be integers: ''1 < gamma <= 100'' and ''0 <= black <= 50''. | ||
− | The undocumented function '''elphel_gamma_add(int gamma, int black)''' is used, where the value of ''gamma'' for this function must be a float ''0.1 < gamma <= 1.0''. Without it the gamma values are not effected. | + | The undocumented function '''elphel_gamma_add(int gamma, int black)''' is used, where the value of ''gamma'' for this function must be a float ''0.1 < gamma <= 1.0''. Without it the gamma values are not effected. Relative code can be found in the file ''camvc.php'' in ''/mnt/flash/html'' in the camera. |
Latest revision as of 17:08, 8 February 2012
How to change Gamma values in an Elphel camera
Changing Gamma and BlackLevel values at present requires some special treatment. Here is a short PHP script that does it:
<?php // Set default frame ahead if (!array_key_exists("ahead",$_GET)) $ahead=3; // Special treatment for the gamma values and blacklevel. // Get exising gamma values if a gamma parameter is requested if (array_key_exists("gamma",$_GET) || array_key_exists("black",$_GET)) { $gammas=array( "GTAB_R__0816"=>"", "GTAB_G__0816"=>"", "GTAB_GB__0816"=>"", "GTAB_B__0816"=>"", "GTAB_R__0824"=>"", "GTAB_G__0824"=>"", "GTAB_GB__0824"=>"", "GTAB_B__0824"=>"" ); // get existing gamma values $gammas= elphel_get_P_arr($gammas); } foreach($_GET as $key=>$value) { if(strtolower(substr($s, 0, 2))=="0x") $value= hexdec($value); switch ($key) { case "gamma": // set gammas array and postpone setting values in the camera $value = intval($value); $gammas["GTAB_R__0816"]=$value; $gammas["GTAB_G__0816"]=$value; $gammas["GTAB_GB__0816"]=$value; $gammas["GTAB_B__0816"]=$value; break; case "black": // set gammas array and postpone setting values in the camera $value = intval($value); $gammas["GTAB_R__0824"]=$value; $gammas["GTAB_G__0824"]=$value; $gammas["GTAB_GB__0824"]=$value; $gammas["GTAB_B__0824"]=$value; break; } // If any gamma value was set, set all gamma values in the camera. // Was postponed earlier if ($gammas != NULL) { // values are taken from the green color elphel_gamma_add($gammas["GTAB_G__0816"]/100, $gammas["GTAB_G__0824"]); // Apply the values at the frame ahead elphel_set_P_arr($gammas, elphel_get_frame() + $ahead); } // // Add code to form the output here } ?>
The code looks for HTTP query parameters black (level of black) and gamma and sets them at the same time.
The parameters should be integers: 1 < gamma <= 100 and 0 <= black <= 50.
The undocumented function elphel_gamma_add(int gamma, int black) is used, where the value of gamma for this function must be a float 0.1 < gamma <= 1.0. Without it the gamma values are not effected. Relative code can be found in the file camvc.php in /mnt/flash/html in the camera.