본문 바로가기

OpenCV

ch11 adaptive

#python 

import cv2

def on_trackbar(pos):
    global src
    bsize = pos
    if bsize % 2 == 0:
        bsize -= 1
    if bsize < 3:
        bsize = 3
    dst = cv2.adaptiveThreshold(src, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, bsize, 2)
    cv2.imshow("dst", dst)

src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch11\\adaptive\\sudoku.jpg", cv2.IMREAD_GRAYSCALE)

if src is None:
    print("Image load failed!")
else:
    cv2.imshow("src", src)
    cv2.namedWindow("dst")
    cv2.createTrackbar("Block Size", "dst", 0, 200, on_trackbar)
    cv2.setTrackbarPos("Block Size", "dst", 11)
    on_trackbar(11)
    cv2.waitKey(0)

// C++

#include "opencv2/opencv.hpp"
#include <iostream>

using namespace cv;
using namespace std;

void on_trackbar(int pos, void* userdata);

int main()
{
	Mat src = imread("sudoku.jpg", 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);

	waitKey(0);
	return 0;
}

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, 2);

	imshow("dst", dst);
}

C++ Code 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 황선규 저


'OpenCV' 카테고리의 다른 글

ch11 threshold  (0) 2024.05.21
ch11 morphology  (0) 2024.05.21
ch10 inrange  (0) 2024.05.21
ch10 colorOp  (0) 2024.05.21
ch10 coloreq  (0) 2024.05.21