#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
Mat image, roi;
int mx1, my1, mx2, my2;
bool cropping = false;
void onMouse(int event, int x, int y, int flags, void* param)
{
if(event == EVENT_LBUTTONDOWN) {
mx1 = x;
my1 = y;
cropping = true;
}
else if(event == EVENT_LBUTTONUP)
{
mx2 = x;
my2 = y;
cropping = false;
rectangle(image, Rect(mx1, my1, mx2 - mx1, my2 - my1), Scalar(0, 255, 0), 2);
imshow("image", image);
}
}
int main()
{
image = imread("dog.png", IMREAD_COLOR);
Mat clone = image.clone();
if(image.empty())
cout << "영상을 읽을 수 없음" << endl;
imshow("image", image);
setMouseCallback("image", onMouse);
while(1) {
int key = waitKey(100);
if(key == 'q') break;
else if(key == 'c') {
roi = clone(Rect(mx1, my1, mx2 - mx1, my2 - my1));
imshow("press_c", roi);
}
else if(key == 's'){
resize(image, image, Size(128, 128));
imshow("image", image);
}
eles if(key == 'g') {
cvtColor(image, image, COLOR_BGR2GRAY);
imshow("image", image);
}
}
return 0;
}
실행시켰을 경우
드래그 하였을 경우
c 클릭시 드래그 영역이 새로운 윈도우 창으로 나타난다.
g를 눌렀을 경우 색상이 컬러에서 흑백으로 바뀐다.
s를 눌렀을 경우 사이즈가 아까 드래그한 사각형의 창보다 작아진 것을 확인할 수 있다. 현재 위의 윈도우 크기는 128*128 이다.
'OpenCV C++' 카테고리의 다른 글
[OpenCV c++] 캐니 에지 (0) | 2020.06.21 |
---|---|
[OpenCV c++] 소벨, 프리윗 마스크 사용 에지 추출 (0) | 2020.06.21 |
[OpenCV c++] 기본 코드 및 기본 정보 (1) | 2020.06.20 |
[OpenCV c++][영상처리와이해 정리] (1) | 2020.06.18 |
[openCV C++] 동영상 촬영, 캡처 기능 만들기 (0) | 2020.06.08 |