OpenCV代码也可以使用背景色去除文本颜色
我正在尝试使用OpenCV清除图像中的文字。 我正在使用下面的代码
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();
这工作正常,但也删除文本颜色。 只是显示大文本的边框。 在这个例子中,我如何保存文本的颜色。
这是原始图像
这是使用此代码转换的图像
尝试使用cv :: THRESH_BINARY_INV,然后反转结果!
对于较大字母的照片,例如您的图片,请尝试增加传递到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);
请记住块大小参数必须是奇数。