【发布时间】:2015-03-03 16:15:56
【问题描述】:
我有一个图像,我尝试循环查找像素位置。
所以如果是层 1000px x 1000px 那么我看到这张图片(我只是展示图片的片段,我希望它足以理解):
但是如果我将图像调整为 300px x 300px,它看起来像这样(也只是显示图像片段):
所以你可以在缩小尺寸后看到我们有一个额外的像素,不仅仅是紫色和绿色,还有两种颜色之间的渐变。但是我编写的程序试图找出绿色和紫色的像素位置,所以我只使用 2 种颜色来找到合适的位置。在不调整我的程序大小的情况下可以很好地检测到它,但是在此处调整大小后,检测到适当的颜色位置会出现问题。
在 Photoshop 中,如果您使用例如容差 100 并取消选中抗锯齿复选标记,它可以正常工作并且即使使用渐变也能找到正确的位置。
如何在我的代码中实现容错。例如,我有绿色,我需要与所有公差颜色进行比较。而如果像素100%容忍绿色,程序应该假设像素连接到绿色。
我的意思。例如,我有 RGB (0, 255, 0) 颜色,我想找到它的所有容差。在这种情况下为绿色。
或者例如,如果我有 RGB (100, 255, 50),那么我需要找到它的所有容差颜色。
我想这里应该是我可以设置的范围和检查公差颜色的颜色。
另外,我使用原始数据循环所有像素。所以我可以得到RGBA:
float red = (rawData[byteIndex] * 1.0) / 255.0;
float green = (rawData[byteIndex + 1] * 1.0) / 255.0;
float blue = (rawData[byteIndex + 2] * 1.0) / 255.0;
float alpha = (rawData[byteIndex + 3] * 1.0) / 255.0;
所以检测纯色工作完美,但我有疑问如何识别该渐变并确定颜色是连接到绿色还是紫色。
Here is also我之前的问题如何循环像素。
【问题讨论】:
-
您使用哪种算法来调整图像大小?
-
@holex,我用这个stackoverflow.com/questions/2658738/…,但如果有任何算法可以通过保存相同颜色来改变大小,我不需要片段之间的渐变。