在 swift 中从 UIImage/CGImage 获取像素数据作为数组

2024-04-26

到目前为止,我有一个应用程序,允许用户在UIImageView元素。

我想要得到原始 RGB 像素数据 (as 0 to 255整数值)作为多维数组,这样我就可以将其输入机器学习算法。或者是否有其他方法可以将原始图像数据发送到单独的 C++ 函数?

在 Swift 中有一个简单的方法可以做到这一点吗?


在 Swift 3 和 Swift 4 中,使用 Core Graphics,可以很容易地做你想做的事情:

extension UIImage {
    func pixelData() -> [UInt8]? {
        let size = self.size
        let dataSize = size.width * size.height * 4
        var pixelData = [UInt8](repeating: 0, count: Int(dataSize))
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let context = CGContext(data: &pixelData,
                                width: Int(size.width),
                                height: Int(size.height),
                                bitsPerComponent: 8,
                                bytesPerRow: 4 * Int(size.width),
                                space: colorSpace,
                                bitmapInfo: CGImageAlphaInfo.noneSkipLast.rawValue)
        guard let cgImage = self.cgImage else { return nil }
        context?.draw(cgImage, in: CGRect(x: 0, y: 0, width: size.width, height: size.height))

        return pixelData
    }
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 swift 中从 UIImage/CGImage 获取像素数据作为数组 的相关文章

随机推荐