글 작성자: 만렙개발자

오랜만에 스티칭을 하고 있습니다. 150장 정도를 평면에 스티칭하다보니 이러한 이러가 나더라구요.

 

 

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-30-858bffe20f62> in <module>
     23       H = np.asarray(frames[i]['homography'])
     24 
---> 25       comp, comp_H = stitch(comp, img_2, H) #*comp_H
     26       comp = trim(comp)
     27 

<ipython-input-26-7eb8c771b87f> in stitch(img_1, img_2, H)
     61   print('i2:', img_2.shape)
     62 
---> 63   warped = cv2.warpPerspective(img_1, H, target_size)
     64 
     65   warped[0:img_2.shape[0], 0:img_2.shape[1]] = img_2

error: OpenCV(4.1.1) /io/opencv/modules/imgproc/src/imgwarp.cpp:1724: 
error: (-215:Assertion failed) dst.cols < SHRT_MAX && dst.rows < SHRT_MAX && src.cols < SHRT_MAX && src.rows < SHRT_MAX in function 'remap'

일단, 에러메세지를 보면, SHRT_MAX보다 작아야한다는 것 처럼 보이는 메세지가 있어서, SHRT_MAX가 얼마인지 찾아보았습니다.

 

SHRT_MAX == 32767

 

openCV에서는 SHRT_MAX를 32767로 지정하고 있습니다. 즉, 행과 열의 어느 축이던지 SHRT_MAX보다 작아야 가능합니다... openCV를 정말 오랬동안 사용해오면서 이러한 문제를 겪지 못했었다는 것에 놀랐네요; 아무련 누군가에게 도움이 되기를 바랍니다-

 

사실 이렇게 많은 이미지, 혹은 많은 이동과 회전이 있는 영상에 대해서 스티칭을 할 때에는 cylindrical or spherical coordinate에다가 하면 이상적이겠죠, 특히 저는 드론 영상을 사용하기에 더 그런 것 같습니다. 하지만 traking하는 것을 visualize 해야하는 것 등, 평면적 한계가 주어진 상황이라 timestap과 threshold를 좀 둬서 paritally stitching하려 합니다 :)