0

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

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

4

3 回答 3

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 上运行。

于 2012-06-07T20:11:56.797 回答
2

看看cv::threshold()adn pass thresholdTypecv::THRESH_BINARY

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

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

于 2012-06-07T19:40:19.040 回答
0

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

于 2013-09-06T11:12:24.367 回答