2014-03-26 107 views
-1

我想清除使用OpenCV的圖像中的文本。我正在使用下面的代碼OpenCV代碼刪除文字顏色也backgraound顏色

cv::Mat original = [MAOpenCV cvMatGrayFromAdjustedUIImage:image]; 
cv::GaussianBlur(original, original, cvSize(11,11), 0); 
cv::adaptiveThreshold(original, original, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 5, 2); 
image = [MAOpenCV UIImageFromCVMat:original]; 
original.release(); 

這工作正常,但它也刪除文本顏色。只是顯示大文本的邊框。在這個例子中,我如何保存文本的顏色。

這裏是原始圖像

enter image description here

下面是使用此代碼

enter image description here

回答

0

嘗試使用CV :: THRESH_BINARY_INV,之後反轉結果轉換的圖像!

+0

Thanx for reply,但這會在'cv :: THRESH_BINARY_INV'中給出相同的結果bcoz,文本內部的顏色不可見。 – Dilip

+0

現在我不能測試它,但是如果你反轉你的圖像,你將得到txt白色和其他所有黑色,運行閾值二進制,你會得到255中的文本,其他的東西0恢復整個事情,你走了,我希望它幫助! http://docs.opencv.org/doc/tutorials/imgproc/threshold/threshold.html – Engine

+0

和我不明白你爲什麼使用adaptivethreshold而不是簡單的閾值? – Engine

0

對於像您這樣的較大字母的圖片,請嘗試增加傳遞到adaptiveThreshold函數的「Block Size」參數。

從5

cv::adaptiveThreshold(original, original, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 5, 2); 

試圖增加它(例如15),直到字母不掏空了。

cv::adaptiveThreshold(original, original, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 15, 2); 

請記住,塊大小參數必須是奇數。