본문 바로가기

OpenCV

ch11 threshold

#python 

import cv2

def erode_dilate():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch11\\morphology\\milkdrop.bmp", cv2.IMREAD_GRAYSCALE)
    if src is None:
        print("Image load failed!")
        return

    _, bin = cv2.threshold(src, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

    dst1 = cv2.erode(bin, None)
    dst2 = cv2.dilate(bin, None)

    cv2.imshow("src", src)
    cv2.imshow("bin", bin)
    cv2.imshow("erode", dst1)
    cv2.imshow("dilate", dst2)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

def open_close():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch11\\morphology\\milkdrop.bmp", cv2.IMREAD_GRAYSCALE)
    if src is None:
        print("Image load failed!")
        return

    _, bin = cv2.threshold(src, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

    dst1 = cv2.morphologyEx(bin, cv2.MORPH_OPEN, None)
    dst2 = cv2.morphologyEx(bin, cv2.MORPH_CLOSE, None)

    cv2.imshow("src", src)
    cv2.imshow("bin", bin)
    cv2.imshow("opening", dst1)
    cv2.imshow("closing", dst2)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

erode_dilate()
open_close()

// C++

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

using namespace cv;
using namespace std;

void on_threshold(int pos, void* userdata);

int main(int argc, char* argv[])
{
	Mat src;
	
	if (argc < 2)
		src = imread("neutrophils.png", 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("Threshold", "dst", 0, 255, on_threshold, (void*)&src);
	setTrackbarPos("Threshold", "dst", 128);

	waitKey(0);
	return 0;
}

void on_threshold(int pos, void* userdata)
{
	Mat src = *(Mat*)userdata;

	Mat dst;
	threshold(src, dst, pos, 255, THRESH_BINARY);

	imshow("dst", dst);
}

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


'OpenCV' 카테고리의 다른 글

ch12 labeling  (0) 2024.05.21
ch12 findcts  (0) 2024.05.21
ch11 morphology  (0) 2024.05.21
ch11 adaptive  (0) 2024.05.21
ch10 inrange  (0) 2024.05.21