#include "histo.h" #include "opencv2/imgcodecs.hpp" #include #include #include #include using namespace cv; void thinning(const Mat img, Mat& skel){ Mat mask, se, eroded, tmp; mask = img.clone(); se = Mat::zeros(img.size(), CV_8UC1); se = getStructuringElement(MORPH_CROSS, Size(3,3)); while(true){ erode(mask, eroded, se); dilate(eroded, tmp, se); tmp = mask - tmp; skel = skel | tmp; eroded.copyTo(mask); //shallow copy miatt kulonben csak a fejlecet masolja if(countNonZero(mask) == 0){ break; } imshow("mask", mask); imshow("skel", skel); waitKey(100); } } int main(){ Mat img = imread("../wrench.jpg", IMREAD_GRAYSCALE); Mat mask, skel; threshold(img, mask, 80, 255, THRESH_BINARY_INV); //medianBlur(mask, mask, 7); thinning(mask, skel); imshow("mask", mask); waitKey(0); return 0; }