前提・実現したいこと
初めて質問します。初心者なので大変初歩的な質問ですがよろしくお願いいたします。Google colabで画像処理を行っています。そこで画像の色を変更するプログラムを作成しています。そこで画素値(0,255,0)といった他の色が混ざっていない単色であれば色変更が可能なのですが、私が扱っている画像は例えばBGRのBが100~105といった1つの値だけでは表現できない色となっております。画像中の色は黒線で区切られており、その区切りごとに色を変更したいと考えています。イメージ的には山の標高(例えば100mごと)ごとに色が区切られているものを、こちらが任意でその色を並び替えるというイメージです。私としては単色では無い画素値を、例えばBGR形式で(100~105,0,150)という様な形で表現して、その画素値を変更したいと考えております。
発生している問題・エラーメッセージ
先述の様に画素値(0,255,0)といった他の色が混ざっていない単色であれば色変更が可能なのですが、私が扱っている画像は例えばBGRのBが100~105といった1つの値だけでは表現できない色となっております。なので画像の色を変更する事が出来ません。エラーメッセージは出ず、結果も出力されるのですが間違った画像が出力されます(色変更が出来ていないという事です)。問題としては私が変更したい色が単色では無い為にその色が認識されず、結果上手く変更されないということです。
該当のソースコード
Python
1import sys,cv2 2import numpy as np 3 4args = sys.argv 5img = cv2.imread("sample.jpg") 6 7cond_p = (img[..., 0] == 150) & (img[..., 1] == 150) & (img[..., 2] == 150) 8cond_f = np.logical_not(cond_p) 9img[cond_p] = [0, 255, 0] 10img[cond_f] = [255, 0, 0] 11 12cv2.imwrite("a.jpg", img)
試したこと
上記のソースコードにおいて7行目で変更したい画素値を指定します。上の例であれば(150,150,150)の単色となっております。それを150の所を145~155、145~155、145-155の3通りを試しました。しかし2つ目の例では全角が含まれるのでエラーになり、その他の例でも上手くいきませんでした。
補足情報(FW/ツールのバージョンなど)
言語:Python
環境:Windows10
ブラウザ:Google chrome(Google Colaboratory)
*ノートパソコンです。全て最新バージョンです。プログラミング中はcolab以外のタブ、アプリは開いていません。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。