2017-11-08 7 views
0

저는 두 개의 이미지에서 불일치 맵을 만들기위한 기본적인 튜토리얼 (https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_calib3d/py_depthmap/py_depthmap.html#py-depthmap)을 따라 왔지만 몇 가지 오류가있었습니다. 1.3하기 matplotlib 내가 파이썬 2.7, OpenCV의 3.3.0을 사용하고Disparity map tutorial SADWindowSize 및 이미지가 플로트 될 수 없습니다.

, NumPy와 1.10.2

이 내 코드 V1이다 : 나는 일치하도록 튜토리얼에서 stereoBM 기능을 수정

 import numpy as np 
    import cv2 
    from matplotlib import pyplot as plt 

    imgL = cv2.imread("C:\Python27\tsukuba_l.png,0") 
    imgR = cv2.imread("C:\Python27\tsukuba_r.png,0") 

    stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15) 
    disparity = stereo.compute(imgL,imgR) 
    plt.imshow(disparity,'gray') 
    plt.show() 

최신 openCV 버전 cv2.createStereoBM ~ cv2.StereoBM_create에 오류가 발생했습니다. (-211) SADWindowSize는 홀수이어야하며, 5..255 이내이어야하며 마지막 줄부터 두 번째 줄까지 (disparity = ...) 이미지의 너비 또는 높이보다 커서는 안됩니다. 나는 블록 크기를 줄이려고 시도했지만 여전히 오류가 있었고 이미지 경로가 정확하고 두 이미지가 같은 크기인지 확인했습니다.

그때 대신 StereoSGBM_create을 사용하려고 한 V2 코드 :

 import numpy as np 
    import cv2 
    from matplotlib import pyplot as plt 

    imgL = cv2.imread("C:\Python27\tsukuba_l.png,0") 
    imgR = cv2.imread("C:\Python27\tsukuba_r.png,0") 

    stereo = cv2.StereoSGBM_create(minDisparity=5, numDisparities=16, blockSize=5) 
    disparity = stereo.compute(imgL,imgR) 
    plt.imshow(disparity,'gray') 
    plt.show() 

그러나이 반환

TypeError: Image data can not convert to float.

어떤 이유가 왜 이러한 오류가 어쩌면 발생?

답변

1

오타 오류 :

변화

imgL = cv2.imread("C:\Python27\tsukuba_l.png,0") 
imgR = cv2.imread("C:\Python27\tsukuba_r.png,0") 

imgL = cv2.imread("C:\Python27\tsukuba_l.png",0) 
imgR = cv2.imread("C:\Python27\tsukuba_r.png",0) 

이상

에 :

imgL = cv2.imread("C:\Python27\tsukuba_l.png",cv2.IMREAD_GRAYSCALE) 
imgR = cv2.imread("C:\Python27\tsukuba_r.png",cv2.IMREAD_GRAYSCALE) 

cv2.imread

에서

Warning Even if the image path is wrong, it won’t throw any error,

+0

괜찮 으면 답을 수락하십시오. 고마워 ;-) – Indent

+0

두 코드를 모두 수정했는데 오류가 발생했습니다. 오류를 던지지 않는 잘못된 경로에 대한 메모를 주셔서 감사합니다. 적어도 필자가 쓸 수있는 것은 하나뿐입니다. – SarahB