私はopencvを使って1チャンネル画像のピクセル値を変更しています。 私はコード実行しOpenCvのfillPoly()はグレースケール(1チャンネル)の画像では機能しません
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要素配列が返されます。 –