如何在iOS上使用OpenCV二进制化CGImage?

在我的iOS项目中,我有一个RGB的CGImage,我想二元化(转换为黑白)。 我想使用OpenCV来做到这一点,但我是OpenCV的新手。 我find了一本关于OpenCV的书,但它不适用于iPhone。

如何在iOS上使用OpenCV对这样的图像进行二进制化?

如果你不想在你的iOS项目中设置OpenCV,我的开源GPUImage框架中有两个阈值filter,用于图像的二值化,一个简单的阈值和基于像素附近的局部亮度的自适应阈值。

您可以对图像应用一个简单的阈值,然后使用如下所示的代码提取生成的二值化UIImage:

 UIImage *inputImage = [UIImage imageNamed:@"inputimage.png"]; GPUImageLuminanceThresholdFilter *thresholdFilter = [[GPUImageLuminanceThresholdFilter alloc] init]; thresholdFilter.threshold = 0.5; UIImage *thresholdFilter = [thresholdFilter imageByFilteringImage:inputImage]; 

(如果不在应用程序中使用ARC,则释放上述filter)

如果您希望将此图像显示在屏幕上,则可以将阈值输出发送到GPUImageView。 如果您愿意,也可以使用这些滤镜处理实时video,因为它们完全在GPU上运行。

看看cv::threshold()传递阈值typescv::THRESH_BINARY

 double cv::threshold(const cv::Mat& src, cv::Mat& dst, double thresh, double maxVal, int thresholdType) 

本例使用OpenCV的C接口将图像转换为黑白图像。

你想要做的是去除低变化率,并保持高变化率,这是一个高通滤波器。 我只有audio信号处理的经验,所以我不知道你有什么select,但这是我将要看的方向。