반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- paragraph
- CES 2O21 참가
- web 사진
- 재귀함수
- 결합전문기관
- KNeighborsClassifier
- Keras
- cudnn
- discrete_scatter
- pycharm
- classification
- web 개발
- bccard
- 대이터
- postorder
- 머신러닝
- html
- broscoding
- web
- 웹 용어
- web 용어
- inorder
- 자료구조
- vscode
- CES 2O21 참여
- java역사
- 데이터전문기관
- C언어
- mglearn
- tensorflow
Archives
- Today
- Total
bro's coding
setMouseCallback 본문
반응형
영상의 투시 변환
#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