我想從二進制掩碼中提取數據。一切順利,但更改爲python將導致數據移動幾個像素。這足以讓我找不到中心。然而,保存圖像將足以陳舊的像素在正確的位置mat和matND有什麼區別?
這是我的代碼。我基本上創建了一個普通的mat來作爲輸出。然而,根據文檔輸出matnd
我是否正確提取數據?如果是這樣告訴我。我試圖找到沿中心給出點的中心。我kidda不希望我的數據被轉移。
import cv2.cv as cv
def main():
imgColor = cv.LoadImage(OPTICIMAGE, cv.CV_LOAD_IMAGE_COLOR)
center, radius = centerandradus(imgColor)
def centerandradus(cvImg, ColorLower=None,ColorUpper=None):
lowerBound = cv.Scalar(130, 0, 130);
upperBound = cv.Scalar(171, 80, 171);
size = cv.GetSize(cvImg)
output = cv.CreateMat(size[0],size[1],cv.CV_8UC1)
cv.InRangeS(cvImg, lowerBound, upperBound,output)
mask = np.asarray(output[:,:])
x,y = np.nonzero(mask)
x, y = np.array(x),np.array(y)
h,k = centerEstimate(x,y)
return np.array([h,k]), radius
def centerEstimate(xList,yList):
x_m = np.mean(np.r_[xList])
y_m = np.mean(np.r_[yList])
return x_m, y_m
編輯:我認爲這與matND的問題,因爲我注意到數據已轉移時,我嘗試打印出來的數據。如果您需要了解更多信息請諮詢
感謝您的時間