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

时间:2012-06-07 17:44:11

标签: iphone ios ios5 image-processing opencv

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

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

3 个答案:

答案 0 :(得分:7)

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

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

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

(如果你的申请中没有使用ARC,则发布上述过滤器)

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

答案 1 :(得分:2)

cv::threshold() adn pass thresholdType 看作cv::THRESH_BINARY

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

This example使用OpenCV的C接口将图像转换为黑色&白。

答案 2 :(得分:0)

您要做的是删除低变化率并保持高变化率,这是一个高通滤波器。我只有音频信号处理方面的经验,所以我真的不知道你有哪些选择,但那是我想要的方向。