


def cut(disparity, image, threshold):
for i in range(0, image.height):
for j in range(0, image.width):
# keep closer object
if cv.GetReal2D(disparity,i,j) > threshold:
cv.Set2D(disparity,i,j,cv.Get2D(image,i,j))
# loading the stereo pair
left = cv.LoadImage('scene_l.bmp',cv.CV_LOAD_IMAGE_GRAYSCALE)
right = cv.LoadImage('scene_r.bmp',cv.CV_LOAD_IMAGE_GRAYSCALE)
disparity_left = cv.CreateMat(left.height, left.width, cv.CV_16S)
disparity_right = cv.CreateMat(left.height, left.width, cv.CV_16S)
# data structure initialization
state = cv.CreateStereoGCState(16,2)
# running the graph-cut algorithm
cv.FindStereoCorrespondenceGC(left,right,
disparity_left,disparity_right,state)
disp_left_visual = cv.CreateMat(left.height, left.width, cv.CV_8U)
cv.ConvertScale( disparity_left, disp_left_visual, -16 );
cv.Save( "disparity.pgm", disp_left_visual ); # save the map
# cutting the object farthest of a threshold (120)
cut(disp_left_visual,left,120)
cv.NamedWindow('Disparity map', cv.CV_WINDOW_AUTOSIZE)
cv.ShowImage('Disparity map', disp_left_visual)
cv.WaitKey()
출처:
답글삭제http://glowingpython.blogspot.kr/2011/11/computing-disparity-map-in-opencv.html
threshold 를 달리 해주면
답글삭제거리에 따라 선택적으로 대상물 분리가능
안녕하세요
답글삭제파이썬언어로 실시간 캠 영상을 처리를 하고 있는데
c에서처럼 이중for문을 사용하니 속도가 떨어지는 문제점이 있었습니다.
혹시 파이썬에서는 어떻게 처리해야되는지 알고 계신가요...