问题标签 [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 投票
2 回答
4498 浏览

ios - 在 Swift 中结合 CGBitmapInfo 和 CGI​​mageAlphaInfo

我正在将 Apple 的UIImageEffects示例代码从 Objective-C 重写为 Swift,我对以下行有疑问:

这是我在 Swift 中的版本:

这是bitmapInfo在 Swift 中创建的最简单的方法吗?

0 投票
1 回答
323 浏览

objective-c - vImage转换功能崩溃

我想将每个像素以 32 位浮点数存储的平面灰度图像转换为 Mac OS X 上的 XRGB 图像。 vImage 似乎是最合适的工具。我编写了一个简短的函数来执行此操作,但它在 vImage 调用中崩溃并出现 EXC_BAD_ACCESS 崩溃。这是我的代码:

我在同一主题上尝试了一些变体,但没有成功。我做错了什么?

0 投票
0 回答
237 浏览

macos - SIPS -z中的os x yosemite使用哪种算法来调整图像大小?

当我从终端 mac os x yosemite 调用 sips -z 函数时,我试图找出用于调整图像大小的算法。

vImage 框架中似乎使用了 Lanczos 算法。它声称“vImage 的几何变换通常看起来比从 Quartz 2D 或 Core Image 获得的效果更好”。SIPS 是否使用 Quartz 2D、Core Image、vImage 或其他东西?

https://developer.apple.com/library/prerelease/content/documentation/Performance/Conceptual/vImage/GeometricOperations/GeometricOperations.html

0 投票
2 回答
410 浏览

ios - UIImage 高斯模糊与 vImage

我正在尝试找到一种更快的生成Gaussian Blur图像的方法,这个博客适用于大多数图像。

但是当图像具有透明背景色时,模糊的图像看起来很糟糕

下面的代码是从博客中复制的:

我尝试了另一种制作Gaussian BlurEffect 的方法,
使用Apple WWDC 2013 UIImage-ImageEffects类别,
但是这个类别的效果更像是Frosted glass而不是Gaussian Blur.

Blur in Core Image工作正常,但它比 vImage 方式慢。

GPUImage也比 vImage 方式慢。

请帮我修改上面的vImage代码,我已经尝试了很多,并在此处发布带有演示的代码;

:)

0 投票
1 回答
702 浏览

swift - 如何在 Swift 3 中使用 vImageMatrixMultiply?

我将使用 Accelerate 框架将矩阵应用于 CGImage。

首先,我将 CGImage 转换为 vImage_Buffer,

然后尝试应用 vImageMatrixMultiply。

但是 vImageMatrixMultiply 不接受 vImage_Buffer 作为 srcs 和 dests 参数,我得到一个编译错误描述:

无法将“vImage_Buffer”类型的值转换为预期的参数类型“UnsafePointer< vImage_Buffer >?”

我搜索了有关将“vImage_Buffer”转换为“UnsafePointer< vImage_Buffer >?”的信息。但还没有找到任何答案。

所以我想知道如何将“vImage_Buffer”转换为“UnsafePointer< vImage_Buffer >?”,或者如何直接创建“UnsafePointer< vImage_Buffer >?” 来自 CGImage,或任何其他适当使用 vImageMatrixMultiply 的方式。

0 投票
2 回答
864 浏览

swift - 转换为 vImage 的 CMSampleBuffer 帧颜色错误

我正在尝试CMSampleBuffer从相机输出转换为vImage稍后应用一些处理。不幸的是,即使没有任何进一步的编辑,我从缓冲区获得的帧颜色也错误:

当前实现的示例图像

实施(不考虑内存管理和错误):

配置视频输出设备:

vImageCASampleBuffer从相机接收到的创建:

将缓冲区转换为 UIImage:

为了测试 CVPixelBuffer 被导出到 UIImage,但将其添加到视频缓冲区具有相同的结果。

0 投票
1 回答
298 浏览

ios - 绘制由 vImage 计算的直方图

我使用 vImageHistogramCalculation_ARGB8888(...) 计算了直方图。我现在将三个 RGB 通道中的每一个的直方图数据存储在 256 个 bin 中。我的问题是使用 OpenGLES 或核心图形在 UIView 中绘制这些值的方法是什么?它需要实时完成(至少每秒 30 帧)。

0 投票
0 回答
1593 浏览

ios - 带像素缓冲区的 vImage_Buffer 初始化

我正在使用以下代码从像素缓冲区初始化 vImage_Buffer。我已将 vImageBuffer_InitWithCVPixelBuffer 中的第二个参数作为 NULL (vImage_CGImageFormat) 传递,因此没有从像素缓冲区到 vImageBuffer 的内部格式转换。它在 XCode 中给出警告-“Null 传递给需要非空参数的被调用者”,但有效。问题是如果我将它转换为 Swift,它不会编译,因为它需要一个非零参数。以直通方式从像素缓冲区制作 vImage 缓冲区的正确方法是什么?甚至函数的声明都说第二个参数中的 NULL 值是可以接受的,但不确定为什么会出现警告。

0 投票
2 回答
424 浏览

macos - Mac 上的 vImage:无法从 Core Video 转换

编辑:固定。一个工作示例位于https://github.com/halmueller/vImage-mac-sample

我正在尝试读取 MacBook Pro 的 Facetime 摄像头的提要,以使用 vImage 框架对其进行处理。我正在关注 Apple为 iOS 编写的VideoCaptureSample中的示例。

我正忙于创建 vImageConverter,它创建了一个 vImage 可以使用的图像缓冲区。我的调用vImageConverter_CreateForCVToCGImageFormat()失败,控制台错误“srcCVFormat 中的信息不足,无法解码图像。vImageCVImageFormatError = -21601”。

相同的调用适用于 iOS。但是 iOS 和 macOS 上的图像格式不同。在 iOS 上, vImageConverter 构造函数能够推断格式信息,但在 macOS 上,它不能。

这是我的设置代码:

当我在 iOS 上运行时,我在控制台中看到:

但是,在 macOS 上,调用vImageConverter_CreateForCVToCGImageFormat返回 nil,我看到:

请注意,图像类型(4 个字母代码)不同,RGB 基础色彩空间也不同。我在 Mac 上尝试过使用 dcip3ColorSpace 而不是 deviceRGB,结果是一样的。

创建这个 vImageConverter 我缺少什么?

0 投票
2 回答
2704 浏览

ios - 如何投射 UnsafeMutableRawPointer!到 UnsafeMutablePointer在 Swift 3.0 或更新版本中?

我正在为我的 iOS 应用程序使用 Accelerate 库。几年前我在 Swift 2.0 中构建了这个应用程序,它运行良好。现在 Swift 更新到 3.0 和 4.0,我必须将大部分代码转换为当前语法。我已经运行了转换器,但仍然有一些语法错误。这是我最难解决的问题。我似乎找不到一种同样简洁的方法来解决它。

我为图像的基本算术运算制作了函数。这是其中之一:

该类Image有一个字段buffer是 avImage_Buffer并且定义如下,

问题: 调用buffer.data返回一个UnsafeMutableRawPointer!. 该vDSP_add函数需要UnsafeMutablePointer<Float>其参数。我曾经能够立即将它投射到一个UnsafeMutablePointer<Float>物体上。看起来初始化程序现在已弃用。因此,在像这样的代码上let leftOperand = UnsafeMutablePointer<Float>(left.buffer.data),我收到了这个错误

我不知道我是否在这里忽略了一些非常简单的事情,但我仍然没有解决这个问题。但是,我正在寻找一种不需要使用循环手动复制每个元素的解决方案,因为该函数在应用程序中被非常频繁地调用。

只是一些可能有帮助的文档链接:

先感谢您!