如何使用opencv使白色像素更亮?

时间:2019-11-25 17:12:16

标签: opencv

我有一个带有“ you”字样的图像和用于处理该图像的代码: enter image description here

Mat dst;
Mat gray;

Mat image = imread( "you.jpg" );  

cvtColor(image, gray, COLOR_BGR2GRAY);
threshold(gray,dst, 170, 255, THRESH_BINARY);

imshow("dst Image", dst);

我正在尝试使“您”更具可读性(使用tesseract进行阅读),如下所示: enter image description here

但是上面的代码给了我黑屏:enter image description here

如何在不更改阈值(170,255)的情况下获取单词,因为我还有其他图像要处理,阈值如(75,150)不适用于它们。

1 个答案:

答案 0 :(得分:0)

也试试这个。它更具“适应性”,即具有较少的“魔术”阈值数,并考虑到背景具有(可能具有)某些颜色渐变。因此,它应该适用于具有不同阈值需求的更广泛的图像集。

输入图像太小,因此进一步的改进(例如,较平滑的字母轮廓)非常有限。希望对您有用。

Mat dst;
Mat gray;

Mat image = imread("you.jpg");

cvtColor(image, gray, COLOR_BGR2GRAY);
cv::GaussianBlur(gray, gray, cv::Size(3, 3), 0);
cv::adaptiveThreshold(gray, dst, 255, cv::ADAPTIVE_THRESH_GAUSSIAN_C, cv::THRESH_BINARY, 31, -25);
cv::Mat kernel = getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
cv::morphologyEx(dst, dst, cv::MORPH_DILATE, kernel, cv::Point(-1, -1), 1);

imshow("dst Image", dst);
waitKey(0);

这是生成的图像。

Resulting image