#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 이다.

+ Recent posts