我在Visual Studio C#中制作了一个程序,它可以检测颜色,然后用该颜色找到该像素的x,y坐标。我已经完成了研究,但是我能找到的只有你已经给出了坐标,并且它感知了颜色,但这并不是我想要的,我想给出颜色,并找到坐标。有人知道怎么做吗?谢谢查找颜色的像素坐标
回答
1)加载你的纹理作为字节数组。例如,如果你的纹理是2x2的大小, 它应该是这个样子:其中: 000 - RGB(0,0) 111 - RGB在(1,0) 222 - RGB(0, 1) 333 - RGB(1,1) 000或111表示它有3个字节,其中每个字节为红色,绿色或蓝色。 一旦你完成了,你可以遍历所有x和y, 并检查当前位置的颜色是否与你搜索的颜色相匹配。
您可以将图像提供给Bitmap对象,然后调用getPixel(x,y)方法在特定点获取像素。由于Bitmap对象具有图像的尺寸,因此可以迭代每个像素(YIKES!),测试所需颜色的匹配。 getPixel()返回一个Color对象,您可以使用它。这是我制作超快的东西。 pictureBox1是我的窗体上的一个PictureBox元素。
Bitmap b = new Bitmap(pictureBox1.Image);
Color c = b.GetPixel(0,0);
但请记住,匹配像素的搜索最差情况O(n)其中n是图像中像素的数量。对于小型和中等尺寸的照片来说,这并不算太坏,但对于巨大的图像,您可能会注意到您的程序挂起。
对于性能,您可能会尝试将搜索分解为多个分段并搜索较小的分段。 – Reddog
你可以使用你已经找到的方法。检查每个坐标处的每个像素以找到与用户输入的颜色相同的颜色。从0开始,0.然后递增X值直到它位于像素行的末尾。每当X值位于行末时,递增Y值并将X重置为0.一旦获得与用户输入的颜色值相等的颜色值,则最后使用的X和Y坐标在找到匹配之前是回馈给用户的。
你可以做什么@ kevin628说,但添加for
语句,所以它会搜索这样的每一个像素:
private void GetPixels()
{
Bitmap b = new Bitmap(pictureBox1.Image);
List<Color> colorList = new List<Color>
{
};
for (int y = 0; y < b.Height; y++)
{
for (int x = 0; x < b.Width; x++)
{
colorList.Add(b.GetPixel(x, y));
}
}
}
然后使用this image,你得到这样的事情(不整这个,因为它为〜50000线):
颜色[A = 255,R = 247,G = 240,B = 136]
颜色[A = 255,R = 252,G = 247,B = 155]颜色[A = 255,R = 242,G = 238,B = 164]
颜色[A = 255,R = 79,G = 124,B = 103]
颜色[A = 255,R = 0颜色[A = 255,R = 15,G = 114,B = 109]
颜色[A = 255,R = 33,G = 125,B = 124]
颜色[A = 255,R = 11,G = 83,B = 80]
颜色[A = 255,R = 36颜色[A = 255,R = 90,G = 70,B = 59]
颜色[A = 255,R = 151,G = 156, 颜色[A = 255,R = 147,G = 109 ,A = 255,R = 220,G = 175,B = 134]
颜色[A = 255,R = 252,G = 204,B = 164]
颜色[颜色[A = 255,R = 126,G = 104,B = 91]
颜色[A = 255,R = 108,G = 94] = 255,R = 219,G = 187,B = 162]
[A = 255,R = 139,G = 137,B = 142]
颜色[A = 255,R = 241,G = 235,B = 239]
颜色[颜色[A = 255,R = 146,G = 172,B = 187]
颜色[A = 255,R = 17,G = 62] = 255,R = 83,G = 92,B = 101]
,B = 85]
颜色[A = 255,R = 40,G = 106,B = 138]
颜色[A = 255,R = 33,G = 116,B = 146]
颜色[A = 255,R = 5颜色[A = 255,R = 0,G = 79,B = 84]
颜色[A = 255,R = 6,G = 94,B = 80]
颜色[A = 255,R = 27,G = 114,B = 98]颜色[A = 255,R = 5,G = 119,B = 120]
颜色[A = 255,R = 21,G = 颜色[A = 255,R = 8,G = 120,B = 121]颜色[A = 255,R = 46,G = 113,B = 106]
颜色[A = 255,R = 21,G = 70,B = 49]
颜色[A = 255,R = 45,G = 123,B = 99]
然后测试对于一种颜色,只是做类似:
for (int i = 0; i < colorList.Count; i++)
{
Color c = Color.Black;
if (c == colorList[i])
{
//do something
}
}
- 1. 查找像素颜色
- 2. 如何在图像中查找特定坐标中的像素颜色?
- 3. 查找图像中颜色的x,y坐标。节点JS
- 4. 使用GLSL从采样器2D查找特定坐标中的像素颜色
- 5. 使用Javascript在网页上的特定坐标上查找像素颜色
- 6. 查找给定RGB颜色的像素
- 7. 查找角色的坐标?
- 8. 寻找坐标的颜色在一个PNG图像中的Java
- 9. 从GtkDrawingArea获取坐标的像素颜色
- 10. 我怎样才能实现像素颜色的x,y坐标?
- 11. OpeNni:颜色坐标到深度坐标
- 12. 使用颜色差异查找眼角的坐标
- 13. 如何查找图像中特定颜色的像素数量?
- 14. 查找图像中文本块的像素坐标
- 15. 查找色块正方形的坐标
- 16. 获取白色像素坐标(OpenCV)
- 17. 如何从图像中获取像素的x,y坐标颜色?
- 18. 查找白色像素线
- 19. 在CSS3D元素上查找屏幕坐标的局部坐标
- 20. 查找图像的平均颜色
- 21. 查找图像视图内的坐标?
- 22. openGL像素坐标
- 23. 查找UIImageView上特定像素的颜色
- 24. 查找像素网格中最具代表性的颜色
- 25. 查找网格交点的像素坐标
- 26. 查找RaphaëlJS生成图像中给定元素的坐标
- 27. 使用编程查找每个像素的坐标
- 28. 如何查找方形图案的角点像素坐标?
- 29. 将坐标转换为像素坐标
- 30. 获得颜色坐标像TEXCOORD0图像模糊
你打算如何给颜色RGB或只是一种颜色蓝色? –
最有可能的RGB,但我不确定这是什么功能......这就是我要求的。 – Pugmatt
你会在哪里找到这些信息?你显然应该遍历所有的x和y,测试它们是否在你所寻求的颜色中。 – SimpleVar