반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

setMouseCallback 본문

[AI]/openCV

setMouseCallback

givemebro 2020. 6. 23. 09:55
반응형

영상의 투시 변환

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

using namespace cv;
using namespace std;

Mat src;
Point2f srcQuad[4], dstQuad[4];

void on_mouse(int event, int x, int y, int flags, void*) {

	static int cnt = 0;

	if (event == EVENT_LBUTTONDOWN) {
		if (cnt < 4) {
			srcQuad[cnt++] = Point2f(x, y);

			circle(src, Point(x, y), 5, Scalar(0, 0, 255), -1);
			imshow("src", src);

			if (cnt == 4) {
				int w = 200, h = 300;
				dstQuad[0] = Point2f(0, 0);
				dstQuad[1] = Point2f(w - 1, 0);
				dstQuad[2] = Point2f(w - 1, h - 1);
				dstQuad[3] = Point2f(0, h - 1);

				Mat pers = getPerspectiveTransform(srcQuad, dstQuad);

				Mat dst;
				warpPerspective(src, dst, pers, Size(w, h));

				imshow("dst", dst);
			}

		}
	}
}

int main() {
	src = imread("C:/Users/A201607180552_1_99_20160718225304.jpg");

	if (src.empty()) {
		cerr << "Image load failed!" << endl;
		return -1;
	}

	namedWindow("src");
	setMouseCallback("src", on_mouse);

	imshow("src", src);
	waitKey();
	return 0;
}

클릭하는 순서에 따라 output이 다름

반응형

'[AI] > openCV' 카테고리의 다른 글

adaptiveThreshold  (0) 2020.06.23
binarization  (0) 2020.06.23
Canny_edge  (0) 2020.06.23
sobel_edge  (0) 2020.06.23
affine_transform in C++  (0) 2020.06.22
medianBlur in C++  (0) 2020.06.22
Gaussian(양방향 필터) in C++  (0) 2020.06.22
Gaussian(잡음 추가) in C++  (0) 2020.06.22
Comments