把圖像進(jìn)行二值化吧。
二值化是將圖像使用黑和白兩種顏色表示的方法。
我們將灰度的閾值設(shè)置為$128$來進(jìn)行二值化,即: $$ y= \begin{cases} 0& (\text{if}\quad y < 128) \ 255& (\text{else}) \end{cases} $$
先灰度化---->二值化
灰度化:http://www.itdecent.cn/p/902a38a39aa6
Mat Binarize(Mat gray, int th)
{
????int width = gray.cols;
????int height = gray.rows;
????// prepare output
????cv::Mat out = cv::Mat::zeros(height, width, CV_8UC1);
????// each y, x
????for (int y = 0; y < height; y++)?
? ? {
????????????for (int x = 0; x < width; x++)?
????????????{
????????????// Binarize
????????????????????if (gray.at<uchar>(y, x) > th)
?????????????????????{
????????????????????????????out.at<uchar>(y, x) = 255;
????????????????????}
????????????????else {
????????????????????out.at<uchar>(y, x) = 0;
????????????????????}
????????????????}
????????}
????????return out;
}

cv::Mat img = cv::imread("D:/chat.png", cv::IMREAD_COLOR);
cv::imshow("old", img);
// BGR -> Gray
cv::Mat gray = BGR2GRY1(img);
cv::imshow("gray", gray);
// Gray -> Binary
cv::Mat out = Binarize(gray, 128);
//cv::imwrite("out.jpg", out);
cv::imshow("sample", out);