Computer Vision

openCV를 사용한 그림자 합성 shadow add shadow sum

익플루 2014. 3. 13. 15:06
반응형

이번에는 openCV 함수를 사용한 openGL로 랜더링한 그림자가 있는 이미지를 뽑아

그 이미지들을 합치는 프로그래밍이다.

 

 

 

우선 openGL로 하나의 plane을 만들고 그 위에 solid cube를 만들었다.

그리고 x,y,z 를 각각 200만큼 카메라를 이동시킨 후 보이는 장면을 랜더링 했고

그것을 이미지로 뽑았다.

 

......등등 ( 난 40개의 그림자를 더했다 )

 

그리고 openCV함수를 써서 각 이미지들의 픽셀값들을 더하는데
그 더한 값들을 이미지의 개수로 나눠준다. 그리고 각 픽셀 값들의 차이가 1이상 차이나면 다른 색으로 랜덤으로 뿌려주는 openCV 함수 floodFillPostprocess 를 사용했다.

 

 

 

........
Mat im1=imread("ScreenShot.png",0);
.........
unsigned char* ptr1 =im1.data+im1.cols*y;
.........
unsigned char* resultptr =result.data+3*(result.cols*y);
  for(int x =0;x<width; x++)
  {
    resultptr[3*x+0]=(ptr1[x]+ptr2[x]+.........../n   //개수만큼 나눠주고 저장.
.........
floodFillPostprocess(result,Scalar::all(1));  //  1만큼 차이나게 만들고 랜덤으로 색을 채워주는 함수
.........
imshow("result",result);

 

 

 

반응형