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 | 31 |
Tags
- esp32
- rotation
- apt update
- ubuntu
- opengl
- vim
- google drive upload
- api사용해서 google drive에 폴더만들기
- sshkey
- Winform
- Python
- google drive 업로드
- opencv resize
- vi
- 우분투 opencv 설치
- opencv apt설치
- opencv
- vtk
- vim명령어
- Google Drive API
- libopencv-dev
- 정보처리기사
- 아두이노 설치
- 아두이노
- c#
- NodeMCU
- translation
- 고정ip할당
- annotating
- 정보처리기사후기
Archives
- Today
- Total
내가 보려고 만든 블로그
OpenCV를 사용한 이미지 Rotation, Translation(c++) 본문
반응형
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(OpenCVExample)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(main main.cpp)
target_link_libraries(main ${OpenCV_LIBS})
main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// read image
cv::Mat image = cv::imread("Lenna.png");
// rotated /////////////////////////////////////////////////////////////////
double angle = 45;
// get the center coordinates of the image to create the 2D rotation matrix
cv::Point2f center((image.cols - 1) / 2.0, (image.rows - 1) / 2.0);
// using getRotationMatrix2D() to get the rotation matrix
cv::Mat rotation_matix = cv::getRotationMatrix2D(center, angle, 1.0);
// we will save the resulting image in rotated_image matrix
cv::Mat rotated_image;
// rotate the image using warpAffine
cv::warpAffine(image, rotated_image, rotation_matix, image.size());
// rotated /////////////////////////////////////////////////////////////////
// translation //////////////////////////////////////////////////////////////
// get the height and width of the image
int height = image.cols;
int width = image.rows;
// get tx and ty values for translation
float tx = float(width) / 4;
float ty = float(height) / 4;
// create the translation matrix using tx and ty
float warp_values[] = { 1.0, 0.0, tx, 0.0, 1.0, ty };
cv::Mat translation_matrix = cv::Mat(2, 3, CV_32F, warp_values);
// save the resulting image in translated_image matrix
cv::Mat translated_image;
// apply affine transformation to the original image using the translation matrix
cv::warpAffine(image, translated_image, translation_matrix, image.size());
// translation //////////////////////////////////////////////////////////////
// Display Image
cv::imshow("Original Image", image);
cv::imshow("Rotated image", rotated_image);
cv::imshow("Translated image", translated_image);
// wait indefinitely, press any key on keyboard to exit
cv::waitKey(0);
cv::destroyAllWindows();
// save the image to disk
cv::imwrite("rotated.jpg", rotated_image);
cv::imwrite("translated_image.jpg", translated_image);
return 0;
}
반응형
'OpenCV > c++' 카테고리의 다른 글
OpenCV에서 컨볼루션을 사용한 이미지 필터링(c++) (0) | 2024.06.13 |
---|---|
OpenCV를 사용하여 이미지에 주석 달기(c++) (0) | 2024.06.05 |
OpenCV를 사용하여 이미지 자르기(c++) (0) | 2024.05.24 |
OpenCV를 사용한 이미지 크기 조정(c++) (0) | 2024.05.23 |
OpenCV를 사용하여 이미지 읽기, 표시 및 쓰기(c++) (0) | 2024.05.22 |