操作过程:
1、读取原图
2、图像灰度化
3、图像二值化
4、提取结构元素
5、开操作
代码:
#include<opencv2\opencv.hpp>
#include<iostream>
#include<math.h>
using namespace std;
using namespace cv;
Mat src, dest;
int main(int argc, char** argv) {
src = imread("E:/python image/42.jpg");//读取原图
if (src.empty()){
cout << "could not find image resource...\n" << std::endl;
return -1;
}
char input[] = "sourceImage";
char output[] = "resultImage";
namedWindow("input", CV_WINDOW_AUTOSIZE);//新建窗口
imshow("input", src);
Mat gray_src;
cvtColor(src, gray_src, CV_BGR2GRAY);
namedWindow("gray image", CV_WINDOW_AUTOSIZE);//灰度化
imshow("gray image", gray_src);
Mat binImg;
adaptiveThreshold(~gray_src, binImg, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 15, -2);
imshow("binary image", binImg);//二值化
Mat hline = getStructuringElement(MORPH_RECT, Size(src.cols / 16, 1), Point(-1, -1));//获取 结构元素
Mat vline = getStructuringElement(MORPH_RECT, Size(src.rows / 16, 1), Point(-1, -1));
Mat temp;
//提取水平线
erode(binImg, temp, hline);
dilate(temp, dest, hline);
imshow("Final Result", temp);
waitKey(0);
return 0;
}
实验结果: