【发布时间】:2026-01-26 21:20:05
【问题描述】:
有人可以在远处通过颜色检测为我指明正确的方向吗?我使用了下面的代码,如果对象或兴趣点距离不到 10 英尺,它会正确抓取图像的 RBG 值。当对象在远处时,代码会返回错误的值。我想拍摄距离超过 10 英尺的物体的照片并检测该图像的颜色。
//On the top of your swift
extension UIImage {
func getPixelColor(pos: CGPoint) -> UIColor {
let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage))
let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)
let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4
let r = CGFloat(data[pixelInfo]) / CGFloat(255.0)
let g = CGFloat(data[pixelInfo+1]) / CGFloat(255.0)
let b = CGFloat(data[pixelInfo+2]) / CGFloat(255.0)
let a = CGFloat(data[pixelInfo+3]) / CGFloat(255.0)
return UIColor(red: r, green: g, blue: b, alpha: a)
}
}
【问题讨论】:
-
When the object is at a distance the code returns the wrong values- 哪里错了?您确定实际图像是正确的吗? -
摄影色彩非常复杂,人眼通常无法识别单个像素。 10 码外的一片绿叶可能包括一些灰色、一些绿色、一些蓝色、一些黄色等。我想不出任何方法来准确预测特定像素的颜色。
-
图片正确。我一直在用相机拍摄图像,然后将其传递给调用 getpixlexdata 函数的 uiimage。 RGB 值远低于应有的值。您知道比上述方法更好的颜色检测方法吗? @luk2302
-
感谢您的反馈。除了拍摄图像之外,您对我如何从远处检测颜色有什么建议吗? @蒂姆
-
您的问题可能只是达到了手机硬件的极限,而不是任何代码,但是您是否尝试过平均 3x3 像素网格?甚至更大的网格?
标签: ios swift colors uiimage rgb