#include #include "opencv2/opencv.hpp" using namespace cv; using namespace std; void on_trackbar(int pos, void* userdata); int main(int argc, char* argv[]) { Mat src; if (argc < 2) src = imread("../../resources/images/sudoku.jpg", IMREAD_GRAYSCALE); else src = imread(argv[1], IMREAD_GRAYSCALE); if (src.empty()) { cerr << "Image load failed!" << endl; return -1; } imshow("src", src); namedWindow("dst"); createTrackbar("Block size", "dst", 0, 200, on_trackbar, (void*)&src); setTrackbarPos("Block size", "dst", 11); cv::waitKey(); cv::destroyAllWindows(); } void on_trackbar(int pos, void* userdata) { Mat src = *(Mat*)userdata; int bsize = pos; if (bsize % 2 == 0) bsize--; if (bsize < 3) bsize = 3; Mat dst; adaptiveThreshold(src, dst, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, bsize, 5); imshow("dst", dst); }