2015-02-05 123 views
0

我以Python中的OpenCV開始,並且遇到問題。如何更改python(opencv)中的像素值而不使用for循環

我有一個從運動相機拍攝的深度圖像。該圖像具有像素值爲零的邊框。我想將這些值更改爲圖像的最大值(即2880),而不使用for循環。

代碼,直到這裏是:

import cv2 
depthImage = cv2.imread('depthImageName',cv2.IMREAD_UNCHANGED) 
if depthImage.any() == 0: 
    depthImage = 2880 

但它不工作,等於零值保持。

任何人可以幫助我嗎?

如果我忘記了有用的信息,請告訴我。

在此先感謝你們! :)

回答

1

當你閱讀使用imread的圖像文件,它被存儲在一個numpy的陣列。因此,您可以使用numpy數組的索引。像這樣:

depthImage[depthImage==0] = 2880 
+0

即使是真的,那無論如何都會重複,而如果這是邊境它可以在4次迭代 – Andrey 2015-02-05 22:36:56

+0

耶做,但它是一個高度優化的迭代。另外,對於不同的輸入圖像,頂部,左側,底部,右側值可能不知道或可能不一致。或者可能不想更改圖像大小。 – 2015-02-05 23:02:56

+0

但OP指定他只想替換邊界中的零,但他的代碼看起來不同。 – Andrey 2015-02-05 23:05:19