如何用PHP检测图像中圆形的颜色
我需要检测圆圈是否被涂过。我试过这样做:如何用PHP检测图像中圆形的颜色,php,image,hex,Php,Image,Hex,我需要检测圆圈是否被涂过。我试过这样做: for ($i=1; $i <= 10; $i++) { //FOR LINE for ($line=1; $line <= 4; $line++) { //FOR COLUMN $rgb = imagecolorat($img, $x_start, $y_start); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0
for ($i=1; $i <= 10; $i++) { //FOR LINE
for ($line=1; $line <= 4; $line++) { //FOR COLUMN
$rgb = imagecolorat($img, $x_start, $y_start);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
//Detect black or white - how?
$y_start -= 50;
}
$x_start += 52;
$y_start = 1023;
echo '-----------------------------<br>';
}
convert score.jpg -rotate 90 -blur 0x2 -threshold 50% result.png
用于($i=1;$i 16)&0xFF;
$g=($rgb>>8)和0xFF;
$b=$rgb&0xFF;
//检测黑色或白色-如何?
$y_开始-=50;
}
$x_start+=52;
$y_start=1023;
回音“-------------------------------
”;
}
但尽管我不知道如何识别颜色,一些像素指向圆圈中的数字,因此它写着这个圆圈是黑色的,但事实上,它是白色的。如何解决此问题以及如何检测黑色?多谢各位
for ($i=1; $i <= 10; $i++) { //FOR LINE
for ($line=1; $line <= 4; $line++) { //FOR COLUMN
$rgb = imagecolorat($img, $x_start, $y_start);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
//Detect black or white - how?
$y_start -= 50;
}
$x_start += 52;
$y_start = 1023;
echo '-----------------------------<br>';
}
convert score.jpg -rotate 90 -blur 0x2 -threshold 50% result.png
作为第2步的替代方案,您可以使用一个小的3x3或5x5中值滤波器来填充铅笔画的圆圈中的任何孔。另一种选择可能是形态扩张来填充孔洞
此外,还要注意那些填写了多个圆圈的学生;-) 取决于你想投资多少能源。如果每个字段的位置都是固定的(扫描都是相同的),则无需进行位置检查(使用角落中的黑色方块),只需制作更大的样本并计算每个样本的平均颜色(样本为一个答案字段)。如果样本的平均颜色为黑色,则可能已填充。但是一些学生可能会用十字架来修正他们的答案,这样的解决方案并不完美