adaptiveThreshold(InputArray src, OutputArray dst,
double maxValue, int adaptiveMethod,
int thresholdType, int blockSize, double C );
#include
#include
using namespace cv;
int main(int argc, char** argv)
{
Mat src, dst, gray_image, binary_image, edst, ddst;
src = imread("D:/vcprojects/hengshuxian.png");
if (!src.data)
{
printf("could not load image...\n");
return -1;
}
//转化成灰度图
cvtColor(src, gray_image, COLOR_RGB2GRAY);
//转化成二值图
adaptiveThreshold(~gray_image, binary_image, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
//定义结构元素
Mat hline = getStructuringElement(MORPH_RECT, Size(src.cols / 16, 1), Point(-1, -1));
//腐蚀
erode(binary_image, edst, hline);
//膨胀
dilate(edst, ddst, hline);
//按位取反
bitwise_not(ddst, ddst);
namedWindow("0", WINDOW_AUTOSIZE);
imshow("0", src);
namedWindow("1", WINDOW_AUTOSIZE);
imshow("1", gray_image);
namedWindow("2", WINDOW_AUTOSIZE);
imshow("2", binary_image);
namedWindow("output_iamge", WINDOW_AUTOSIZE);
imshow("output_image", ddst);
waitKey(0);
return 0;
}
结果
代码演示
#include
#include
using namespace cv;
int main(int argc, char** argv)
{
Mat src, dst, gray_image, binary_image,edst,ddst;
src = imread("D:/vcprojects/chars.png");
if (!src.data)
{
printf("could not load image...\n");
return -1;
}
//转化成灰度图
cvtColor(src, gray_image, COLOR_RGB2GRAY);
//转化成二值图
adaptiveThreshold(~gray_image, binary_image, 255,ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
//定义结构元素
Mat kernel = getStructuringElement(MORPH_RECT, Size(3,3), Point(-1, -1));
//腐蚀
erode(binary_image, edst, kernel);
//膨胀
dilate(edst, ddst, kernel);
//按位取反
bitwise_not(ddst, ddst);
namedWindow("1", WINDOW_AUTOSIZE);
imshow("1", gray_image);
namedWindow("2", WINDOW_AUTOSIZE);
imshow("2", binary_image);
namedWindow("output_iamge", WINDOW_AUTOSIZE);
imshow("output_image", ddst);
waitKey(0);
return 0;
}