https://95mkr.tistory.com/entry/OPENCV7?category=750764
main.cpp
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
int main(){
cv::Mat src;
// road2.jpg - width : 960, height : 720
src = cv::imread("road2.jpg", cv::IMREAD_COLOR);
cv::resize(src, src, cv::Size(src.cols/2, src.rows/2));
if(src.empty()){
std::cout<<"Can't Open Image"<<std::endl;
return -1;
}
cv::Mat ROI, HSV;
ROI = src(cv::Rect(0,200,480,160));
cv::cvtColor(ROI,HSV,cv::COLOR_BGR2HSV);
cv::Scalar lower_white = cv::Scalar(0,0,200);
cv::Scalar upper_white = cv::Scalar(180,255,255);
cv::inRange(HSV, lower_white, upper_white, HSV);
cv::Mat filter, dilate, canny;
cv::bilateralFilter(HSV, filter, 5, 100, 100);
cv::dilate(HSV, dilate, cv::Mat());
cv::Canny(dilate, canny, 150, 270);
cv::Mat lineResult;
cv::cvtColor(canny, lineResult, cv::COLOR_GRAY2BGR);
std::vector<cv::Vec4i> lines;
cv::HoughLinesP(canny, lines, 1, CV_PI/180, 50, 50, 10);
for(size_t i = 0; i < lines.size(); i++){
cv::Vec4i l = lines[i];
cv::line(lineResult, cv::Point(l[0], l[1]), cv::Point(l[2], l[3]), cv::Scalar(0,0,255), 2, cv::LINE_AA);
}
cv::imshow("HSV", HSV);
cv::imshow("dilate", dilate);
cv::imshow("canny", canny);
cv::imshow("Line Detection", lineResult);
cv::waitKey(0);
return 0;
}
침식, 팽창
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>
int main(){
cv::Mat src;
src = cv::imread("road2.jpg", cv::IMREAD_COLOR);
cv::resize(src, src, cv::Size(src.cols/2, src.rows/2));
if(src.empty()){
std::cout << "Can't Open Image" << std::endl;
return -1;
}
cv::Mat gray, binary;
cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY);
cv::threshold(gray, binary, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);
cv::Mat erosion, dilation;
cv::erode(binary, erosion, cv::Mat());
cv::dilate(binary, dilation, cv::Mat());
cv::imshow("erosion", erosion);
cv::imshow("dilation", dilation);
cv::waitKey(0);
return 0;
}
열기와 닫기
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>
int main(){
cv::Mat src;
src = cv::imread("road2.jpg", cv::IMREAD_COLOR);
cv::resize(src, src, cv::Size(src.cols/2, src.rows/2));
if(src.empty()){
std::cout << "Can't Open Image" << std::endl;
return -1;
}
cv::Mat gray, binary;
cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY);
cv::threshold(gray, binary, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);
cv::Mat opening, closing;
cv::morphologyEx(binary, opening, cv::MORPH_OPEN, cv::Mat());
cv::morphologyEx(binary, closing, cv::MORPH_CLOSE, cv::Mat());
cv::imshow("binary", binary);
cv::imshow("opening", opening);
cv::imshow("closing", closing);
cv::waitKey(0);
return 0;
}
'embedded > opencv' 카테고리의 다른 글
+. 윈도우에서 opencv 설치하고 라이브러리 추가하기 (0) | 2021.09.08 |
---|---|
5. 이미지 프로세싱(3) (0) | 2021.09.08 |
3. 이미지 프로세싱(1) (0) | 2021.09.08 |
2. opencv 실시간 촬영 (0) | 2021.09.03 |
1. opencv로 이미지 출력 (0) | 2021.09.03 |