목차
- C 언어 Codelite에 opencv 라이브러리 링크 및 개발 환경 구성 예제 이전 포스팅 참고 학습
- C 언어 opencv 라이브러리 활용 JPEG 이미지 출력하기 예제 이전 포스팅 참고 학습
- C 언어 opencv 라이브러리 활용 도형 마우스 드래그로 이동 시키기 예제
- C++ opencv 활용 마우스로 선그리기 예제
- C++ opencv 활용 키보드 클릭시 그려진 도형 jpeg 이미지 파일로 저장 예제
C 언어 Codelite에 opencv 라이브러리 링크 및 개발 환경 구성 예제 이전 포스팅 참고 학습
이전 포스팅에서는 Codelite 개발 환경에서 OpenCV 라이브러리를 사용하기 위한 설정 과정들에 대해 알아보았습니다. OpenCV는 컴퓨터 비전 및 이미지 처리를 위한 라이브러리로, Codelite와 함께 사용하려면 프로젝트 설정 및 라이브러리 링크가 필요합니다. 따라서 예제 C 코드 작성과 실행 결과를 확인하기 위해서 아래 링크를 참고하여 학습해주세요.
2023.09.07 - [C] - [C/C++] C 언어 Codelite에 opencv 라이브러리 링크 및 간단한 확인 예제
C 언어 opencv 라이브러리 활용 JPEG 이미지 출력하기 예제 이전 포스팅 참고 학습
다음은 이전포스팅에서 C 언어를 사용하여 OpenCV를 초기화하고 JPEG 이미지를 화면에 표시하는 예제를 알아보았습니다. OpenCV를 사용하여 이미지를 로드하고 표시하는 간단한 예제였습니다. 따라서 개인 이미지를 C 코드에서 opencv를 활용하여 가져오고 사진 데이터를 조작 및 사용이 가능합니다. 해당 내용이 궁금하시다면 아래 링크를 참고해주세요.
2023.09.08 - [C] - [C/C++] C 언어 opencv 활용 이미지 파일 출력하기 예제(마우스 이벤트)
C 언어 opencv 라이브러리 활용 도형 마우스 드래그로 이동 시키기 예제
마지막으로 OpenCV를 사용하여 도형을 그리고 마우스로 해당 도형을 드래그하여 이동시키는 예제를 알아보았습니다. 이를 통해 마우스 이벤트 및 그래픽 처리를 연습할 수 있습니다. 오늘 예제도 마우스로 선을 그리고 특정 키를 누르면 현재까지 그린 그림을 jpeg 이미지로 저장하는 예제입니다. opencv에서 마우스 드래그로 도형을 움직이는 방법이 궁금하시다면 아래 링크를 확인해주세요.
2023.09.08 - [C] - [C/C++] C 언어 opencv 활용 마우스로 이미지 움직이기 및 이미지 삭제 예제(Mouse drag)
C++ opencv 활용 마우스로 선그리기 예제
아래는 C++에서 OpenCV를 사용하여 마우스로 선을 그리는 예제입니다. OpenCV의 마우스 콜백 함수를 활용하여 사용자가 마우스로 그림을 그릴 수 있습니다.
#include <opencv2/opencv.hpp>
bool drawing = false; // 마우스로 그림 그리는 중인지 여부
cv::Point prevPoint, endPoint; // 이전 점과 현재 점 저장
cv::Mat image; // 이미지 객체
// 마우스 이벤트 콜백 함수
void onMouse(int event, int x, int y, int flags, void* param) {
if (event == cv::EVENT_LBUTTONDOWN) {
drawing = true;
prevPoint = cv::Point(x, y);
} else if (event == cv::EVENT_MOUSEMOVE && drawing) {
endPoint = cv::Point(x, y);
cv::line(image, prevPoint, endPoint, cv::Scalar(0, 0, 255), 2); // 선 그리기
prevPoint = endPoint;
cv::imshow("Draw Line", image);
} else if (event == cv::EVENT_LBUTTONUP) {
drawing = false;
}
}
int main() {
// 빈 화면 생성
image = cv::Mat(400, 400, CV_8UC3, cv::Scalar(255, 255, 255));
cv::namedWindow("Draw Line");
cv::setMouseCallback("Draw Line", onMouse);
while (true) {
cv::imshow("Draw Line", image);
char key = cv::waitKey(10);
if (key == 27) {
break; // ESC 키를 누르면 종료
}
}
return 0;
}
C++ opencv 활용 키보드 클릭시 그려진 도형 jpeg 이미지 파일로 저장 예제
아래는 C++에서 OpenCV를 사용하여 사용자가 그린 도형을 키보드 s키를 누르면 JPEG 이미지 파일로 저장하는 예제입니다.
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
// 그림을 그릴 캔버스를 초기화합니다.
Mat canvas(400, 400, CV_8UC3, Scalar(255, 255, 255)); // 흰색 배경
Point start2, end2;
bool drawing = false;
// 마우스 이벤트 콜백 함수
void mouseCallback(int event, int x, int y, int flags, void* param) {
if (event == EVENT_LBUTTONDOWN) {
drawing = true;
start2 = Point(x, y);
end2 = start2;
}
else if (event == EVENT_MOUSEMOVE && drawing) {
end2 = Point(x, y);
line(canvas, start2, end2, Scalar(0, 0, 0), 2); // 검은색 선을 그립니다.
start2 = end2;
imshow("Canvas", canvas);
}
else if (event == EVENT_LBUTTONUP) {
drawing = false;
}
}
int main() {
namedWindow("Canvas", WINDOW_AUTOSIZE);
setMouseCallback("Canvas", mouseCallback);
while (true) {
imshow("Canvas", canvas);
char key = waitKey(1);
if (key == 's') break; // ESC 키를 누르면 종료합니다.
}
imwrite("/tmp/test_new.jpg", canvas); // 그려진 이미지를 저장합니다.
return 0;
}