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
- api사용해서 google drive에 폴더만들기
- Google Drive API
- 아두이노 설치
- sshkey
- libopencv-dev
- 정보처리기사후기
- 고정ip할당
- 정보처리기사
- NodeMCU
- vim명령어
- vi
- Winform
- rotation
- opencv resize
- opengl
- 아두이노
- vim
- google drive upload
- google drive 업로드
- 우분투 opencv 설치
- esp32
- annotating
- Python
- opencv apt설치
- apt update
- vtk
- translation
- opencv
- ubuntu
- c#
Archives
- Today
- Total
내가 보려고 만든 블로그
OpenCV에서 컨볼루션을 사용한 이미지 필터링(c++) 본문
반응형
https://learnopencv.com/image-filtering-using-convolution-in-opencv/
main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// read image
cv::Mat image = cv::imread("Lenna.png");
if (image.empty()){
std::cout << "Could not read image" << std::endl;
}
// Apply identity filter using kernel
cv::Mat kernel1 = (cv::Mat_<double>(3,3) << 0, 0, 0, 0, 1, 0, 0, 0, 0);
cv::Mat identity;
cv::filter2D(image, identity, -1 , kernel1, cv::Point(-1, -1), 0, 4);
// Blurred using kernel
// Initialize matrix with all ones
cv::Mat kernel2 = cv::Mat::ones(5,5, CV_64F);
// Normalize the elements
kernel2 = kernel2 / 25;
cv::Mat kernelBlur;
cv::filter2D(image, kernelBlur, -1 , kernel2, cv::Point(-1, -1), 0, 4);
// Blurred using OpenCV C++ blur() function
cv::Mat img_blur;
cv::blur(image, img_blur, cv::Size(5,5));
// Performing Gaussian Blur
cv::Mat gaussian_blur;
cv::GaussianBlur(image, gaussian_blur, cv::Size(5,5), 0);
// Apply Median Blur
cv::Mat median_blurred;
cv::medianBlur(image, median_blurred, (5,5));
// Apply sharpening using kernel
cv::Mat sharp_img;
cv::Mat kernel3 = (cv::Mat_<double>(3,3) << 0, -1, 0,
-1, 5, -1,
0, -1, 0);
cv::filter2D(image, sharp_img, -1 , kernel3, cv::Point(-1, -1), 0, cv::BORDER_DEFAULT);
// Apply bilateral filtering
cv::Mat bilateral_filter;
cv::bilateralFilter(image, bilateral_filter, 9, 75, 75);
// Display Image
cv::imshow("Original", image);
cv::imshow("Identity", identity);
cv::imshow("Kernel blur", kernelBlur);
cv::imshow("Blurred", img_blur);
cv::imshow("Gaussian Blurred", gaussian_blur);
cv::imwrite("median_blur.jpg", median_blurred);
cv::imwrite("sharp_image.jpg", sharp_img);
cv::imshow("Bilateral filtering", bilateral_filter);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
반응형
'OpenCV > c++' 카테고리의 다른 글
OpenCV를 사용하여 이미지에 주석 달기(c++) (0) | 2024.06.05 |
---|---|
OpenCV를 사용한 이미지 Rotation, Translation(c++) (0) | 2024.06.03 |
OpenCV를 사용하여 이미지 자르기(c++) (0) | 2024.05.24 |
OpenCV를 사용한 이미지 크기 조정(c++) (0) | 2024.05.23 |
OpenCV를 사용하여 이미지 읽기, 표시 및 쓰기(c++) (0) | 2024.05.22 |