关于iPhone:如何在iOS上使用OpenCV对CGImage进行二值化?

How do I binarize a CGImage using OpenCV on iOS?

在我的iOS项目中,我想对RGB的CGImage进行二值化(转换为黑白)。 我想使用OpenCV来做到这一点,但是我是OpenCV的新手。 我找到了一本关于OpenCV的书,但它不是针对iPhone的。

如何在iOS上使用OpenCV对图像进行二值化处理?


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

您可以对图像应用简单的阈值,然后使用类似以下代码的代码提取结果二值化的UIImage:

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

(如果您的应用程序中未使用ARC,请释放上述过滤器)

如果您希望将此图像显示在屏幕上,则可以将阈值输出发送到GPUImageView。如果需要,您还可以使用这些过滤器处理实时视频,因为它们完全在GPU上运行。


cv::THRESH_BINARY的形式查看cv::threshold()和pass thresholdType:

1
2
3
4
5
double cv::threshold(const cv::Mat& src,
                     cv::Mat& dst,
                     double thresh,
                     double maxVal,
                     int thresholdType)

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


您想要做的是删除低变化率,而保留高变化率,这是一个高通滤波器。我只有音频信号处理方面的经验,所以我真的不知道可以使用哪些选项,但这就??是我要寻找的方向。