0

私のiOSプロジェクトには、2値化(白黒に変換)したいRGBのCGImageがあります。これを行うためにOpenCVを使用したいのですが、OpenCVは初めてです。OpenCVで本を見つけましたが、iPhone用ではありませんでした。

iOSでOpenCVを使用してそのような画像を2値化するにはどうすればよいですか?

4

3 に答える 3

7

iOS プロジェクトで OpenCV を設定したくない場合、私のオープン ソースGPUImageフレームワークには、画像を 2 値化するための 2 つのしきい値フィルターが含まれています。単純なしきい値と、ピクセル付近のローカル輝度に基づく適応的なしきい値です。

次のようなコードを使用して、単純なしきい値を画像に適用し、結果のバイナリ化された 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()adnpassthresholdTypeを見cv::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 に答える