前提・実現したいこと
自作のデータセット(白黒画像25000枚)の中に、画像の端が見切れて白くなってしまっているものが複数枚あるため、その部分を黒く塗りつぶしたいと考えております。
以下のサイトを参考に、画像の白の領域を切り取って、黒で補完できれば良いのではと考えたのですが、以下のようなエラーが発生し、また、画像には何の変化もありませんでした。
お手数をおかけしますが、コードをどのように修正すればうまくいくかご教示いただけないでしょうか。
どうぞよろしくお願い致します。
http://sh0122.hatenadiary.jp/entry/2017/10/17/220447
発生している問題・エラーメッセージ
<ipython-input-16-1e94062ab931> in <module>() 25 26 # 白の領域をカット ---> 27 masked_img = cv2.bitwise_and(img, mask_white) 28 29 # 切り取った部分を黒で補完 error: OpenCV(3.4.3) /io/opencv/modules/core/src/arithm.cpp:225: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and type), nor 'array op scalar', nor 'scalar op array' in function 'binary_op'
該当のソースコード
Python
1import cv2, matplotlib 2import numpy as np 3import matplotlib.pyplot as plt 4 5white_min = np.array([255, 255, 255], np.uint8)# ここがよくわかりません 6white_max = np.array([255, 255, 255], np.uint8)# ここがよくわかりません 7 8img = cv2.imread('NORMAL_resize_100_1_0506/NORMAL-9615869-4_resized.jpeg') 9img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 10plt.imshow(cv2.cvtColor(img_hsv, cv2.COLOR_HSV2RGB)) 11 12# 白の領域のマスクを取得 13mask_white = cv2.inRange(img, white_min, white_max) 14 15# 白の領域をカット 16masked_img = cv2.bitwise_and(img, mask_white) 17 18# 切り取った部分を黒で補完 19masked_replace_black = cv2.addWeighted(img, 1, cv2.cvtColor(mask_white, cv2.COLOR_GRAY2RGB), 1, 0) 20 21plt.imshow(cv2.cvtColor(masked_replace_black, cv2.COLOR_BGR2RGB)) 22 23plt.show()
補足情報(FW/ツールのバージョンなど)
google colabを使っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/04 02:17
2019/06/04 05:32
2019/06/04 06:01
2019/06/04 06:10
2019/06/04 06:34