gpt4 book ai didi

php - 循环遍历指定区域的像素

转载 作者:可可西里 更新时间:2023-10-31 23:49:37 31 4
gpt4 key购买 nike

我在我的照片网站上按颜色功能进行了搜索。为此,我遍历了一幅图像中的所有像素,并将前 10 个像素记录在我的数据库中。我遇到的问题是,因为我的照片有人物主题,所以我的搜索者真的正在搜索主题的颜色,而不是背景(天空、人行道、草地等)。我知道这很难完全消除,但我想我需要稍微改变一下颜色以获得更好的效果。

请看这个一张照片的例子:

enter image description here

左边的例子是我正在做的,收集所有像素。黑色和灰色占据了该选择的前 3 名颜色,粉红色是第 4 名,背景女孩裙子的海军蓝是第 5 名 - 我只收集前 5 名颜色,我的主要颜色并没有真正排名那么好。如果我可以改变循环遍历像素的方式,只选择绿色框中的颜色(右),我认为这会使我的收藏略有不同。这是我难以理解数学的地方。

我这样做是为了遍历所有像素:

$size = @getimagesize($imageFile); 

for ($x = 0; $x < $size[0]; $x += $granularity) {
for($y = 0; $y < $size[1]; $y += $granularity) {
// do stuff here
}

但我需要将其更改为顶部和底部大约减少 5%,侧面大约减少 8-10%,然后循环遍历新选择。

我确实开始了这个,但后来停止了,因为我不确定我的计算返回奇数还是像 1.030044858 这样的数字。

这就是我所达到的程度,希望有人可以帮助清理它并让我越线:

$granularity = 4;
$granularity = max(1, abs((int)$granularity));

$size = @getimagesize($imageFile);
$sizeX = $size[0];
$sizeY = $size[1];

$xPerCent = 8; // for me to set & adjust
$yPerCent = 5; // for me to set & adjust

$xSelectionWidth = ($sizeX/100) * $xPerCent;
$xSelectionWidth = $sizeX - ($xSelectionWidth * 2);

$xSelectionHeight = ($sizeY/100) * $yPerCent;
$xSelectionHeight = $sizeY - ($ySelectionHeight * 2);

$xSelectionStart = 0;
$xSelectionEnd = 0;
$ySelectionStart = 0;
$ySelectionEnd = 0;

for($x = 0; $x < $size[0]; $x += $granularity) {
for($y = 0; $y < $size[1]; $y += $granularity) {
// do stuff here
}
}

最佳答案

如果你想忽略图片中的某些东西,我建议你将它转换为黑白并取最大的白色区域(你需要设置转换的细节以确保你不会得到所有非白色的颜色作为黑色)。

我的意思是红色,肤色应该设置为白色,紫色设置为黑色。在这种情况下,背景和任何深色表面都是黑色的。阅读http://www.switchonthecode.com/tutorials/csharp-tutorial-convert-a-color-image-to-grayscale这是一个很好的介绍,但我说的是真正的黑白,所以您可以调整/改编这个。

这将极大地帮助您将注意力集中在图像的正确部分。

黑白形式识别越准确,您就越能识别出彩色主体。请阅读http://en.wikipedia.org/wiki/Pattern_recognition有关模式识别的详细信息。

获取您要在原始图像中查看的坐标集。

抱歉,我不是 PHP 专家,我不能用这种方式说得更具体,但我希望这对您有所帮助...

关于php - 循环遍历指定区域的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11670135/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com