반응형

When I tried to build the workspace, error about cv_bridge is occured.

 

fig.1

 

The error shows about the library link structure.

So I had to check opencv version and correct the lib path for cv_bridge.

fig.2

 

I could get the lib path by typing the commend showd upward picture.

 

And then I need to change the lib path in cv_bridge.

For linking library process, we have to edit cv_bridgeConfig.cmake file

 

cd /opt/ros/melodic/share/cv_bridge/cmake sudo gedit cv_bridgeConfig.cmake

sudo gedit cv_bridgeConfig.cmake

 

 

fig.3

upward picture shows the cmake file and we can check "_include_dirs" part.

we have to edit the setting of opencv include path to fig.2

 

It would be like below.

 

반응형
반응형

사용하는 제품은 FLIR사의 "BFS-U3-51S5C-C" 제품이다.

 

해당 제품을 통해 얻어지는 영상을 Visual Studio에서 OpenCV를 통해 C++로 처리하고자 한다.

 

www.flirkorea.com/support-center/iis/machine-vision/downloads/spinnaker-sdk-and-firmware-download/  

 

Spinnaker SDK 다운로드

Spinnaker SDK를 다운로드하세요.

www.flirkorea.com

 

우선 위의 링크를 통해 Spinnaker SDK를 설치해준다.

 

 

저장소에 보면 위와 같이 Windows 환경에서 SpinnakerSDK의 Full 버전을 다운받을 수 있도록 제공해주고 있다.

 

 

 

그리고 설치를 진행하는 중 위와 같은 과정을 진행하게 되는데 위의 "Camera Evaluation"의 경우 카메라의 정상작동 여부만을 확인할 수 있도록 Viewer 와 이와 관련된 간단한 프로그램들만 설치되는 과정으로 보이고 코드작업을 통해 디테일한 작업을 진행하고자 한다면 아래의 "Application Development"를 선택해야 하는 것으로 보인다.

 

 

그리고 설치가 완료되면

"C:/Program Files/ FLIR Systems/ Spinnaker/ src/ " 의 경로에서 샘플 코드들을 확인할 수 있다.

 

 

나는 현재 Visual 2019 버전을 사용중인데 해당 버전은 아직 지원되지 않는 것 같다.

그래서 MS 홈페이지에서 VisualStudio2015를 설치를 진행하려 했으나

위와 같은 창에서 패키지가 없거나 찾을 수 없다는 내용만 뜨면서 진행이 되지 않는 문제가 발생하였다.

 

결국 iso 형식의 visual2015를 구해 진행하니 설치가 잘 되었다.

그리고 앞에서 받은 Sample Code들을 돌려봐도 잘 실행되는 것을 확인할 수 있었다.

 

그럼 이제 OpenCV를 연동하여 본격적으로 작업에 들어가보자.

 

우선 OpenCV는 3.2 버전을 다운받아 설치해주었다.

 

이 과정에서는 아래 블로그를 참고하여 진행하였다.

 

www.cnblogs.com/dinghongkai/p/11631147.html

 

VS 2017 + OpenCV + Spinnaker SDK(PointGrey) 配置 - Hongkai_Ding - 博客园

1. OpenCV 配置 1.1 下载 opencv 源码,并将其添加至环境变量 D:\opencv4.1\build\x64\vc15\bin 注:vs2015 选 vc14,vs2017 选 vc

www.cnblogs.com

 

우선 프로젝트 상단의 x86을 x64로 변경해준다.

 

그리고 프로젝트 설정에서 추가포함드렉터리와 추가라이브러리디렉토리를 추가해주고

링커->입력 부분에서 opencv_world320d.lib을 추가해준다.

 

여기까지 됐으면 프로젝트를 다시한번 빌드하여 오류가 없는지 확인해보자.

 

그럼 이제 윈도우 환경변수를 추가해주자.

 

 

 

 

 

위의 설정이 완료되었으면 다시 코드로 돌아와 아래 내용을 추가해보자.

 

 

그리고 이상이 없다면 프로젝트 설정이 끝난 것이고 이제 FLIR카메라에서 얻어진 영상을

OpenCV로 처리할 수 있을 것이다.

반응형
반응형

●  히스토그램 작성 순서도

●  cvCreateHist 함수  (히스토그램을 정의하는데 사용하는 함수)

 

CvHistogram* cvCreateHist( int dims, int *sizes, int type, 

                                                     float **range=NULL, int uniform=1)

 

 

-> dims

   히스토그램의 차원을 지정.

   흑백 영상이면 1, 컬러 영상이면 3차원.

 

-> sizes

    히스토그램 차원의 크기를 나타내며 배열로 표시함. 

    1차원 256 흑백영상의 경우 0부터 255까지 256개의 박대를 사용하므로

         int sizes[1] = {256}  으로 나타낼 수 있다.

    3차원 컬러영상의 경우 각각의 태널은 256개의 막대를 사용하므로

         int sizes[3] = {256, 256, 256}  으로 나타낼 수 있다.

 

-> type

    히스토그램 표현 형식을 나타낸다.

    type = CV_HIST_ARRAY이면 다채널 밀집 배열 (0인 원소가 적은 배열)을 나타내고

    type = CV_HIST_SPARSE이면 다채널 희소 배열 (0인 원소가 많은 배열)을 나타낸다.

 

-> ranges

    히스토그램의 x축 범위를 나타낸다.

 

-> uniform

    히스토그램에서 막대 사이의 간격을 일정하게 할 것인지 결정한다.

    uniform ≠ 0 이면 막대의 간격을 일정한 간격으로 한다.

 

 

●  cvCalcHist 함수 (영상으로부터 히스토그램을 계산하는데 사용하는 함수)

 

void cvCalcHist( IplImage** img, CvHistogram* hist);

 

 

->  img

     원 영상을 나타냄

 

->  hist

     히스토그램에 대한 포인터를 나타낸다.

 

 

●  cvGetMinMaxHistValue 함수 (막대에 대한 최대 빈도수와 최소 빈도수를 구함)

 

void cvGetMinMaxHistValue( CvHistogram* hist,

                                                 float* value_min, float* value_max);

 

 

->  hist

     히스토그램을 나타냄

 

->  value_min

     히스토그램의 최소 빈도수를 나타낸다.

 

->  value_max

     히스토그램의 최대 빈도수를 나타낸다.

 

 

●  cvScale 함수 (하나의 배열을 다른 배열로 선형 변환헤 의해 변환하는 함수)

 

void cvScale( CvArr* src, CvArr* dst, double scale=1, double shift=0);

 

 

->  src

      원 영상을 나타낸다.

 

->  dst

      목적 영상을 나타낸다.

 

->  scale

      스케일 파라미터를 나타낸다.

 

->  shift

      이동 파라미터를 나타낸다.

 

         cvScale() 함수는 dst = src * scale + shift 에 의해 변환된다.(cvConvertScale()와 동일)

 

 

●  cvRectangle 함수  (직사각형을 그리기 위한 함수)

 

void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1 );

 

 

->  img

     직사각형이 그려질 영상을 나타냄

 

->  pt1

     직사각형의 모서리를 나타낸다.

 

->  pt2

     직사각형의 반대편 모서리를 나타낸다.

 

->  color

     직사각형의 선의 색상을 나타낸다.

 

->  thickness

     직사각형의 선의 두께를 나타낸다.

 

          cvRectangle() 함수에서 모서리 좌표 pt1과 pt2를 정할 때 원정이 어디에 위치하느냐는 중요한 문제이다.

          영상 좌표에서 원점은 왼쪽 상단임을 알고있자!

 

 

●  cvGetReal1D 함수  (1차원 히스토그램에서 i번째 막대의 빈고수를 얻기 위한 함수)

 

double cvGetReal1D( CvArr* arr, int idx0 );

 

 

-> arr

     1차원 배열을 나타낸다.

 

->  idx0

     원소의 위치에 대한 인덱스를 나타낸다.

     cvGetReal1D(histo->bins, i) 는 배열 bins 에서 i번째 인덱스에 대한 원소를 반환한다.

 

 

 

●  cvSet 함수  (영상을 주어진 값으로 설정할 때 사용)

 

void cvSet( CvArr* arr, CvScalar valuem CvArr* mask=0 );

 

 

->  arr

     원 영상을 나타낸다.

 

->  value

     채울 값을 지정한다.

 

->  mask

     마스크를 나타낸다.

 

         cvSet(histImage, cvScalarAll(255), 0) 이면 영상 histImage의 픽셀값을 255로 설정한다.

 

         cvScalarAll(double num);

               ->  모든 스칼라의 value들을 num 으로 초기화시켜준다.

 

 

 

●  cvEqualizeHist 함수  (흑백 영상에서 히스토그램 평활화하는데 사용하는 함수)

 

void cvEqualizeHist(CvArr* src, CvArr* dst);

 

 

->  src

     흑백 영상을 나타낸다.

 

->  dst

     목적 영상을 나타낸다.

 

 

 

출처: OpenCV를 이용한 영상처리( 임동훈 지음)


    

반응형

'OpenCV > Histogram' 카테고리의 다른 글

히스토그램  (0) 2020.12.29
히스토그램 예제  (0) 2019.08.12
반응형

히스토그램이란 영상의 픽셀값들에 대한 분포를 나타내는 그래프로

영상을 분석하는데 매우 유용하다.

 

https://ttend.tistory.com/570

좌측은 일반적인 도수분포표이고 우측은 도수분포표를 이용하여 나타낸

히스토그램으로 영상처리 작업을 진행할 땐 히스토그램의 x축이 픽셀값,

y축이 빈도수로 나타내어 질 수 있다.

 

또한 픽셀값이 작을수록 영상은 어둡게 나타나고 픽셀값이 증가함에 따라

영상은 밝게 표시되므로 영상의 밝기에 따른 히스토그램은

(좌) 어두운 영상                                               (우) 밝은 영상

위와 같이 나타낼 수 있다.

 

또한 명암대비에 따른 히스토그램을 나타내면

 

(좌) 낮은 명암대비 영상                                 (우) 높은 명암대비 영상

위와 같이 나타낼 수 있고 이를통해 알 수 있듯이 명암대비가 낮은 영상은 픽셀값들이 좁은 영역에 분포되어

영상이 선명하지 않고 명암대비가 높은 영상은 넓은 범위에 걸쳐 골고루 분포되어 영상이 선명함을 알 수 있다.

 

*명암대비 : 상이한 2가지 색이 서로 영향을 미쳐서 그 상이함이 강조되어 지각()되는 현상

 

 

 

반응형

'OpenCV > Histogram' 카테고리의 다른 글

히스토그램을 나타내기 위한 OpenCV 함수들  (0) 2020.12.29
히스토그램 예제  (0) 2019.08.12

+ Recent posts