//形态学操作
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
const char* file = "./12.png";
Mat img = imread(file);
cvtColor(img, img, CV_BGR2GRAY);
threshold(img, img, 150, 255, THRESH_BINARY);
imshow("io", img);
erode(img, img, getStructuringElement(MORPH_RECT, Size(img.cols/16, 25)));
dilate(img, img, getStructuringElement(MORPH_RECT, Size(25, img.rows/16)));
//如果将getStructuringElement(MORPH_RECT, Size(img.cols/16, 25))与getStructuringElement(MORPH_RECT, Size(25, img.rows/16))
//交换位置将会留下水平直线,img.cols/16当线段超过这么长时才考虑是否可以留下来,小于这个长度的一定留不下来
namedWindow("img", WINDOW_NORMAL);
imshow("img", img);
waitKey(0);
return 0;
}
openCV3形态学操作(提取水平与垂直直线)
最新推荐文章于 2024-08-11 20:16:20 发布