问题标签 [vimage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
478 浏览

ios - 如何在 Xamarin 的 iOS 中使用 vImage (Accelerate) 框架?

我想为 iPhone 应用程序做一些图像处理。我发现 vImage 是 iOS 5.0 及更高版本的库(可能在本机 C 中)。

如果我使用 Xamarin 进行应用程序开发,我该如何使用这个库?

0 投票
1 回答
918 浏览

ios - How to use vImageMatrixMultiply to convert from YUV planer data to 32 bpp, 8bpc RGBX?

I have YUV planar data (420YpCbCr8BiPlanarFullRange) and I would like to convert it to RBGX (RBGA but with 255 in the alpha channel).

The vImage docs and this answer state this is possible using a Matrix multiplication function:

vImageMatrixMultiply_Planar8

However, I have been unable to find any sample code to that does this.

0 投票
1 回答
257 浏览

core-graphics - 我需要帮助优化 BGR888 到 NSView 的 blitting

这是我想出的将 24 位 BGR 图像传送到 NSView 的最佳方法。

通过确保 NSWindow 主机也具有相同的颜色空间,我确实减少了大量的 CPU 时间。

我认为这里有 4 或 5 个像素的副本:

  1. vImage转换中(必填)
  2. 打电话CGDataProviderCreateWithData
  3. 打电话CGImageCreate
  4. 创建NSBitmapImageRep位图
  5. 在最后的 blit 中drawInRect(必需)

任何人都想参与改进它?

任何帮助将非常感激。

0 投票
1 回答
1446 浏览

ios - 使用 vImageHistogramCalculation 计算图像的直方图

我正在尝试使用 vImage's 计算图像的直方图vImageHistogramCalculation_ARGBFFFF,但我得到了一个vImage_Error类型kvImageNullPointerArgument(错误代码 a -21772)。

这是我的代码:

我怀疑它与我的histogram参数有关,根据文档,它应该是“指向四个直方图数组的指针”。我是否正确声明了它?

谢谢。

0 投票
1 回答
501 浏览

macos - ColorSync 和 vImage 产生错误的输出

我正在尝试捕获显示器的内容并将显示器的色彩空间转换为 sRGB。我正在尝试使用 vImage 和低级 ColorSync 转换 API 来执行此操作,但输出有一个奇怪的像素块加倍。我的 ColorSyncTransformRef 似乎正确,因为 ColorSyncTransformConvert() 有效,但使用 vImage 的 Accelerate 框架版本不正确。有没有人见过这个并且知道如何解决它?谢谢!

这是输出的样子,你可以看到奇怪的加倍:

在此处输入图像描述

这是我正在使用的代码:

0 投票
3 回答
702 浏览

ios - “致命错误:在 Swift ios 中使用 vImageBuffer_initWithCGImage 时在展开可选值时意外发现 nil”

我正在使用 Swift iOS8 并尝试将 UIImage 转换为 vImage_Buffer 以使用 Accelerate.framework 执行操作。我正在尝试使用 vImageBuffer_initWithCGImage 进行转换,这是我尝试过的代码:

没有编译错误,当我尝试运行它时,我在 vImageBuffer_InitWithCGImage 的行上得到“致命错误:在展开可选值时意外发现 nil”。我不确定为什么会发生这种情况,因为缓冲区和第三个参数(即 backgroundColor)都是不安全的,并且根据文档应该接受 NULL,对于 UnsafeMutablePointer(如果我错了,请纠正我)。

编辑:好的,我至少明白为什么现在发生了。因为我发送未包装的 &buffer!。但我不能发送 &buffer,因为它说“vImage_buffer!与 vImage_buffer 不同”。

我尝试了各种将缓冲区声明为 vImage_buffer 的组合?但我无法让它发挥作用。我基本上只需要分配缓冲区参数以将其传递给 init 函数,但我不知道如何...。请帮忙

0 投票
2 回答
237 浏览

c++ - 如何在 ios 中使用 vImage 旋转和粘贴带有 alpha 通道的图像?

我有一个大图像 A 和另一个图像 B,它有一个我想粘贴到 A 中的 alpha 通道。我想在将其粘贴到 A 之前对 B 应用仿射变换。在 c++ 中执行此操作的步骤是什么在 iOS 中使用 vImage?

0 投票
1 回答
297 浏览

swift - vImageAlphaBlend 崩溃

我正在尝试layers: [CGImageRef]drawLayer(thisLayer: CALayer!, inContext ctx: CGContext!)我的 custom 例程中进行 alpha 混合NSView。到目前为止,我一直CGContextDrawImage()将这些图层绘制到 drawLayer 上下文中。在进行分析时,我注意到CGContextDrawImage()需要 70% 的 CPU 时间,因此我决定尝试 Accelerate 框架。我更改了代码,但它只是崩溃了,我不知道可能是什么原因。

我正在创建这样的图层:

我的 drawLayers 例程如下所示:

canvasSize 总是相同的,并且所有图层的大小都相同,所以我不明白为什么最后一行会崩溃。

我也看不到如何使用新的便利函数直接从 CGLayerRefs 创建 vImageBuffers。这就是为什么我用复杂的方式来做这件事。

任何帮助表示赞赏。

编辑

inBitmapData确实包含反映我设置的背景颜色的像素数据。但是,调试器不能po &inBitmapData并且失败并显示此消息:

错误:对“CFData”的引用未用于初始化 inout 参数 &inBitmapData

所以我寻找一种方法来获取指向 inBitmapData 的指针。这就是我想出的:

我还必须更改指向 alpha 混合输入所需的两个缓冲区的数据的方式。现在它不再崩溃了,幸运的是,可以使用分析器检查速度提升(vImageAlphaBlend只需要大约三分之一CGContextDrawImage),但不幸的是,图像会导致透明图像出现像素故障,而不是白色图像背景。

到目前为止,我不再收到任何运行时错误,但由于结果不如预期,我担心我仍然没有正确使用 alpha blend 函数。

0 投票
1 回答
811 浏览

ios - 你如何获得不受管理的来自CGColorSpace?

我正在用 Swift 编写一个vImage_CGImageFormat从 a创建 a 的函数,CGImage如下所示:

但是,这不会编译。那是因为CGImageGetColorSpace(image)returnCGColorSpace!和上面的构造函数只接受Unmanaged<CGColorSpace>参数colorSpace

还有另一种方法可以做到这一点吗?也许转换CGColorSpaceUnmanaged<CGColorSpace>?

0 投票
3 回答
2672 浏览

ios - iOS Accelerate Framework vImage - 性能改进?

我一直在使用 OpenCV 和 Apple 的 Accelerate 框架,发现 Accelerate 的性能很慢而且 Apple 的文档有限。让我们举个例子:

此调用大约需要 20 毫秒。这具有在我的应用程序中无法使用的实际意义。也许直方图的均衡本来就很慢,但我也测试了 BGRA->Grayscale,发现 OpenCV 可以在 ~5ms 内完成,而 vImage 需要 ~20ms。

在测试其他功能时,我发现了一个项目,它制作了一个带有模糊功能(要点)的简单滑块应用程序,我清理了它以进行测试。大约 20 毫秒。

有什么技巧可以让这些功能更快吗?