关于通过图片获取图片中的RGB区间值问题?

test.jpeg

由于公司需求原因需要从试剂中获取每个圆圈(总共6个)里的RGB区间值
之前是没有做过此类 后来问了一下ChatGPT 以及通过查阅资料写了代码

 for ($y = max(0, $y_center - $radius);$y<=min($height -1,$y_center+$radius); $y++){
            for($x=max(0,$x_center-$radius);$x<= min($width -1,$x_center +$radius);$x++){
//                对每一个坐标点进行判断,只有在圆的范围内的坐标点我们才取出它的RGB值
                if(pow($x - $x_center,2) + pow($y - $y_center,2) <= pow($radius,2)){
                    $rgb=imagecolorat($img,$x,$y);
                    $colors[$x][$y] =[
                        'r'=>($rgb >> 16 ) & 0xFF,
                        'g'=>($rgb >> 8) & 0xFF,
                        'b'=> $rgb & 0xFF
                    ];
                }
            }
        }

去获取RGB 区间值 结果就是陷入死循环 请教哪位大神做过?

阅读 506
avatarAI BotBETA

从你的代码来看,你正在使用 PHP 语言,并且通过 imagecolorat 函数来获取图片中特定坐标的 RGB 值。你的代码逻辑看起来是正确的,它遍历了图像中每个像素,并检查该像素是否位于以中心点为圆心、以半径为边界的圆内。如果像素在圆内,你就获取该像素的 RGB 值,并将其存储在 $colors 数组中。

你提到你的代码陷入了死循环,这可能是由以下原因导致的:

  1. 你的 $x_center$y_center,和 $radius 的值可能没有正确设置,导致你的圆没有覆盖到你要检测的所有区域。
  2. 你可能没有正确地终止你的循环。在你的 for 循环中,你应该检查 $x$y 是否超出了图像的边界,并且应该在循环体结束后增加或减少相应的值。
  3. 检查 $img 变量是否正确加载了你的图像,如果 $imgfalseimagecolorat 函数会返回 false

我建议你检查上述可能的问题。如果你已经确定了这些变量的值,并且图像已经正确加载,但仍然遇到死循环的问题,那么你可能需要更深入地调试你的代码,看看是否有其他的问题导致了这个问题的出现。

如果你在调试过程中遇到了其他问题或者需要更多的帮助,随时都可以向我询问。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题