rasbperry pi中的imageproc模塊效率非常高,但由於與imageproc模塊相關的圖像類型不同,我無法使用opencv 。將rasbperry pi的imageproc模塊圖像轉換爲(numpy array或cvmat)
所以,我尋求一種方法,使預先使用圖像類型(用於與CvMat CV,numpyarray爲CV2,..)的OpenCV的與rasbperry PI imageproc模塊 感謝
rasbperry pi中的imageproc模塊效率非常高,但由於與imageproc模塊相關的圖像類型不同,我無法使用opencv 。將rasbperry pi的imageproc模塊圖像轉換爲(numpy array或cvmat)
所以,我尋求一種方法,使預先使用圖像類型(用於與CvMat CV,numpyarray爲CV2,..)的OpenCV的與rasbperry PI imageproc模塊 感謝
,您必須首先轉換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_array
與cv2
。
如果崩潰(它不應該)有段錯誤(這實在不應該)某事很可能在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
尺寸或像素時崩潰,則問題可能出現在圖像捕獲代碼中。如果您在問題中顯示了一個最簡單的示例,則該問題更易於調試。
我會嘗試這種方法 非常感謝你 –
這似乎沒有錯誤,但給「分段錯誤」 –
這很有趣。它在哪裏崩潰?如果從代碼中刪除上面的行('img_array = ...'),它是否仍然崩潰?您是否驗證了OpenCV的工作原理?如果你編輯你的問題,它會有幫助,以便它有一個崩潰代碼的最小例子。 – DrV