OpenCV C++
[OpenCV c++] 영상편집기 만들기
메밀국수가생각나
2020. 6. 21. 17:40
#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 이다.