저는 두 개의 이미지에서 불일치 맵을 만들기위한 기본적인 튜토리얼 (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.
어떤 이유가 왜 이러한 오류가 어쩌면 발생?
괜찮 으면 답을 수락하십시오. 고마워 ;-) – Indent
두 코드를 모두 수정했는데 오류가 발생했습니다. 오류를 던지지 않는 잘못된 경로에 대한 메모를 주셔서 감사합니다. 적어도 필자가 쓸 수있는 것은 하나뿐입니다. – SarahB