###前提・実現したいこと
pythonで画像の色変換を行いたいのですが,
opencvのimreadで画像を読み込み,
例えば[R,G,B]=[255,0,0]の画素を[R,G,B]=[0,0,255]にしようとプログラムを組んでいるのですが,
numpyのwhere等を使って一括で変換する方法ってありますか?
現状は,ループで1画素ずつ判定して行っています.
###該当のソースコード
python
1import sys,cv2 2import numpy as np 3 4args = sys.argv 5img = cv2.imread(args[1]) 6 7find_color = np.array([255,0,0]) 8change_color = np.array([0,0,255]) 9 10height,width,channels = img.shape 11img2 = np.empty((height,widht,channels)) 12 13for y in range(height): 14 for x in range(width): 15 if np.allclose(img[y,x,:],find_color[-1::-1]): 16 img2[y,x,:] = change_color[-1::-1] 17 18cv2.imwrite("result.png",img2)
###試したこと
python
1img2 = np.where( np.allclose(img[:,:,:],find_color[-1::-1]), change_color,img) 2cv2.imwrite("result.png",img2)
とやりましたが,上手く行かなかったため,for文で一画素ずつ行っています
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。