gpt4 book ai didi

ios - 你如何在 iOS 上的图像中找到特定颜色的区域?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:33 27 4
gpt4 key购买 nike

我正在做一个图像处理 iOS 应用程序,我们有一个大图像(例如:大小为 2000x2000)。假设图像是全黑的,除了图像的一部分是不同的颜色(假设该区域的大小为 200x200)。

SI 想要计算不同颜色区域的开始和结束位置。我怎样才能做到这一点?

最佳答案

下面是一种允许 CPU 从 UIImage 获取像素值的简单方法。步骤是

  • 为像素分配缓冲区
  • 使用缓冲区作为后备存储创建位图内存上下文
  • 将图像绘制到上下文中(将像素写入缓冲区)
  • 检查缓冲区中的像素
  • 释放缓冲区和相关资源

- (void)processImage:(UIImage *)input
{
int width = input.size.width;
int height = input.size.height;

// allocate the pixel buffer
uint32_t *pixelBuffer = calloc( width * height, sizeof(uint32_t) );

// create a context with RGBA pixels
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate( pixelBuffer, width, height, 8, width * sizeof(uint32_t), colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedLast );

// invert the y-axis, so that increasing y is down
CGContextScaleCTM( context, 1.0, -1.0 );
CGContextTranslateCTM( context, 0, -height );

// draw the image into the pixel buffer
UIGraphicsPushContext( context );
[input drawAtPoint:CGPointZero];
UIGraphicsPopContext();

// scan the image
int x, y;
uint8_t r, g, b, a;
uint8_t *pixel = (uint8_t *)pixelBuffer;

for ( y = 0; y < height; y++ )
for ( x = 0; x < height; x++ )
{
r = pixel[0];
g = pixel[1];
b = pixel[2];
a = pixel[3];

// do something with the pixel value here

pixel += 4;
}

// release the resources
CGContextRelease( context );
CGColorSpaceRelease( colorSpace );
free( pixelBuffer );
}

关于ios - 你如何在 iOS 上的图像中找到特定颜色的区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23357347/

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