embedded/opencv

4. 이미지 프로세싱(2)

crab. 2021. 9. 8. 08:11

https://95mkr.tistory.com/entry/OPENCV7?category=750764 

 

[OPENCV] 7. Line Detection

☞ 메인보드 : Jetson Nano Developer Kit ☞ 운영 체제 : Ubuntu 18.04 - JetPack 4.4.1 ☞ OpenCV 버전 : 4.2.0 ☞ IDE : Visual Studio Code ☞ 언어 : C++ 목차 ○ 1. 작업 순서 ○ 2. 코드 작성 ○ 3. 이미..

95mkr.tistory.com

정말 좋은 티스토리이다...

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