반응형


허프변환에 대해 좀더 알고 싶으시면 아래 글을 참고하세요...

[그래픽스&컴퓨터비전/구현한 것들] - Hough Line Transform 구현





  1. #include <opencv2/core/mat.hpp>  
  2. #include <opencv2/imgcodecs.hpp>  
  3. #include <opencv2/imgproc.hpp>  
  4. #include <opencv2/highgui.hpp>  
  5.   
  6. using namespace cv;  
  7. using namespace std;  
  8.   
  9.   
  10. int main(int argc, char**argv )  
  11. {  
  12.     Mat img_original = imread("indoor1.jpg", IMREAD_COLOR );  
  13.     Mat img_edge, img_gray;  
  14.   
  15.   
  16.     //그레이 스케일 영상으로 변환 한후.  
  17.     cvtColor( img_original, img_gray, COLOR_BGR2GRAY);  
  18.     //캐니에지를 이용하여 에지 성분을 검출합니다.  
  19.     Canny( img_gray, img_edge, 30, 90, 3);  
  20.   
  21.   
  22.     //직선 성분을 검출합니다.  
  23.     vector<Vec4i> lines;  
  24.     HoughLinesP( img_edge, lines, 1, CV_PI/180,  30, 30, 3);  
  25.   
  26.     //검출한 직선을 영상에 그려줍니다.  
  27.     forint i=0; i<lines.size(); i++ )  
  28.     {  
  29.         Vec4i L = lines[i];  
  30.         line(img_original, Point(L[0],L[1]), Point(L[2],L[3]),  
  31.              Scalar(0,0,255), 1, LINE_AA );  
  32.     }  
  33.   
  34.   
  35.     cvNamedWindow("edge", WINDOW_AUTOSIZE );  
  36.     imshow( "edge", img_edge );  
  37.   
  38.     cvNamedWindow("result", WINDOW_AUTOSIZE );  
  39.     imshow( "result", img_original );  
  40.   
  41.     waitKey(0);  
  42. }  



Canny함수와 HoughLinesP 함수의 파라메타를 조정하여 복도 사진에서 직선 성분을 뽑아봤습니다.   수작업으로 제대로 나온 상태를 찾은 거라.. 실제로는 이런 결과가 안나올 수 있습니다.  똑같은 장소에서 촬영한 이미지라도 조명 상황에 따라 에지가 다르게 뽑힐 수 있어서요..




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts