ヒートマップの特定の色を指定し、その色と同じ位置を別の画像でぼかす
ヒートマップの画像のRGB値のうちBのみ指定した場合は上手くぼかしたものと入れ替えれたが、RとGの値両方指定し、ぼかしたものと入れ替えようとしたらプログラム自体は終了しているのですが入れ替わった画像が出力されませんでした。
やりたい処理としましては、全体的にぼかし処理を加えた画像と何も処理していない元の画像を用意し、下のようなヒートマップ画像のRGB値のRとGが0となっている部分(主に濃い青色の部分)のみをぼかしている画像と入れ替え特定の部分をぼかした画像を作成したいと思っています。
しかし、上記でも触れたようにBのみの値をを指定した場合ですと上手く特定の部分をボカせたのですが、RとGが0の部分のみぼかすといったことができないでいます。
先ほど回答いただいたように訂正したところ青ではなく画像でいうと真っ赤な部分がぼけてしまいました。
追記
下記回答のおかげで差し替えることができました。
しかし、画像は以下のようになり部分的に上手くいってないような感じがします。
画像的には大部分ができているので問題はないのですがなるべく綺麗に差し替えれた方がいいのでもし、もう少し改善できるようであればご教授願いたいです。
画像はぼかしではなくどこが再帰られているか見やすくするために緑の画像に差し替えたものです。
該当のソースコード
python
1import cv2 2import numpy as np 3import math 4 5x=None 6y=None 7xmax=224 8ymax=224 9xcenter=112 10ycenter=112 11Rfigs=[0,128] 12Gfigs=[0,128] 13 14img = cv2.imread(r"/Users/1.jpg")#ぼかしたい画像 15imgheat = cv2.imread(r"/Users/2jpg")#ヒートマップ画像 16blur2 = cv2.imread(r"/Users/3.jpg")#ぼかしてある画像 17 18img2 = cv2.resize(img,(224,224)) 19blur2 = cv2.resize(blur2,(224,224)) 20count = 0 21 22for Rfig in Rfigs: 23 for Gfig in Gfigs: 24 for x in range(xmax): 25 for y in range(ymax): 26 pixelValue = imgheat[x,y,[0]] 27 if pixelValue == Rfig and Gfig: 28 if Rfig==0 and Gfig==0: 29 img2[x,y,[0]] = blur2[x,y,[0]] 30 img2[x,y,[1]] = blur2[x,y,[1]] 31 img2[x,y,[2]] = blur2[x,y,[2]] 32 33 if Rfig==0 and Gfig==0: 34 cv2.imwrite(r"/Users/gazou.jpg',img2)
動作したBの値飲みを指定した時のコード
python
1for Bfig in Bfigs: 2 for x in range(xmax): 3 for y in range(ymax): 4 pixelValue = imgheat[x,y,[0]] 5 if pixelValue == Bfig: 6 if Bfig==128: 7 img2[x,y,[0]] = blur3[x,y,[0]] 8 img2[x,y,[1]] = blur3[x,y,[1]] 9 img2[x,y,[2]] = blur3[x,y,[2]] 10 11 if Bfig==128: 12 cv2.imwrite(r"/Users/gazou.jpg',img2)
###回答から変更したコード(変更部分のみ)
python
1b, g, r = cv2.split(imgheat) 2 3# heatmap の red == 0 かつ green == 0 の画素は差し替える 4img2[(g == 0) & (r == 0)] = blur1[(g == 0) & (r == 0)] 5img2[(b == 128)] = blur1[(b == 128)] 6cv2.imwrite(r"/Users/gazou.jpg',img2)
回答2件
あなたの回答
tips
プレビュー