所以我使用opencv修改1通道圖像上的像素值。 我創建使用Opencv fillPoly()不適用於灰度(單通道)圖像
curr = np.zeros((660,512, 1))
然後執行該代碼的空白圖像:其中每個區看起來像
for r in regions:
cv2.fillPoly(curr, r, [190])
:
[[[363 588]
[304 593]
[323 652]
[377 654]]]
我知道這些代碼是至少有些工作,因爲當我使用imshow()時,區域根據需要填充。不過,我想重新訪問修改後的像素值,並得到了[0]我試着寫了整個IMG TI的臨時文件,如下所示:
for elt in curr:
f2.write(str(elt) + '\n')
但是,該文件只是看起來像
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
[ 0.]
我哪裏錯了?爲什麼我不能重新訪問我寫給圖片的190年代?
正如我所說的,顯示在一個窗口中的圖像;它看起來很好。但是我希望能夠查看文件,並找到最大值。 作爲替代方法,我嘗試將圖像作爲png寫入文件,然後使用imread打開保存的文件。現在我得到[190,190,190]作爲圖像中的最大值。這正是我所期望的灰度圖像嗎?我以爲因爲圖像形狀是(660,512,1),訪問單個像素會給我一個奇異的值。但訪問img [x] [y]總是返回一個3元素的數組。 –