2014-06-25 81 views

回答

0

,您必須首先轉換imgproc輸出到numpy.array。之後,您幾乎可以直接使用cv2這個陣列。

如果我們假設你有你的imgproc圖像中img,則:

import numpy 

img_array = numpy.array([ [ img[x,y] for x in range(img.width) ] for y in range(img.height) ] , dtype='uint8') 

不幸的是,在imgproc沒有更快的數據訪問方法,你將有一個接一個做。但是,在循環速度較慢之後,您可以直接使用img_arraycv2


如果崩潰(它不應該)有段錯誤(這實在不應該)某事很可能在imgproc嚴重錯誤。最好的猜測是img[x,y]指向由imgproc創建的圖像的外部。爲了調試,我們將命令分成更多可口的部分。

# dimensions ok? 
w = img.width 
h = img.height 
print w,h 

# can we fetch pixels at the extremes? 
upperleft = img[0,0] 
lowerright = img[w-1, h-1] 
print upperleft, lowerright 

# the loop without conversion to array 
img_l = [ [ img[x,y] for x in range(w) ] for y in range(h) ] 
print len(img_l) 

# convert the image into an array 
img_array = numpy.array(img_l, dtype='uint8') 
print img_array.shape 

哪裏此崩潰?請注意,在所有平臺上,print語句對於段錯誤並不完全可靠,但它表明代碼已運行至少那麼遠。

如果代碼在訪問img尺寸或像素時崩潰,則問題可能出現在圖像捕獲代碼中。如果您在問題中顯示了一個最簡單的示例,則該問題更易於調試。

+0

我會嘗試這種方法 非常感謝你 –

+0

這似乎沒有錯誤,但給「分段錯誤」 –

+0

這很有趣。它在哪裏崩潰?如果從代碼中刪除上面的行('img_array = ...'),它是否仍然崩潰?您是否驗證了OpenCV的工作原理?如果你編輯你的問題,它會有幫助,以便它有一個崩潰代碼的最小例子。 – DrV