Pyhon Numpy OpenCVを利用して道路の画像から空の色を抽出したいです。
空の色のHSV空間の青色の範囲がいまいちわからなくて困っています。
基本の空の色のHSV(BGR)を教えていただきたいです。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
空の色のHSV空間の青色の範囲がいまいちわからなくて困っています。
ペイントの色抽出を使って空の適当な点の色を取得し、その前後の値で調整してはどうでしょうか。
RGB 色空間より HSV 色空間のほうが色の指定がしやすいかもしれません。
python
1import cv2 2 3# 画像を読み込む。 4img = cv2.imread("test.jpg") 5hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 6 7# 2値化 8binary = cv2.inRange(hsv, lowerb=(100, 70, 110), upperb=(115, 255, 255)) 9 10# 可視化 11img[binary == 0] = 0 12cv2.imwrite("dst.png", img)
入力画像
出力画像
基本の空の色のHSV(BGR)を教えていただきたいです。
天候や時間帯、また撮影したカメラの明るさなどの設定によって空の色はだいぶ変わってくるので、特定の画像の空の抽出なら色ベースでもいいと思いますが、ありとあらゆるシーンにおける空の抽出となると、色ベースでは精度に限界があると思います。
汎用的な方法を求めるのであれば、Deep Learning のセマンティックセグメンテーションを使うといいかもしれません。
上記画像にセマンティックセグメンテーションを行った結果
追記
自分はいつも画像処理のパラメータを決めるときは Jupyter Notebook で使える ipywidgets という拡張機能を使って調整しています。
回答のパラメータ値もそれで決めました。
bash
1pip install ipywidgets 2jupyter nbextension enable --py --sys-prefix widgetsnbextension
python
1import cv2 2from IPython.display import Image, display 3from ipywidgets import widgets 4 5 6def imshow(img): 7 """画像を Notebook 上に表示する。 8 """ 9 ret, encoded = cv2.imencode(".png", img) 10 display(Image(encoded)) 11 12 13def inRange(**kwargs): 14 """2値化処理を行い、結果を表示する。 15 """ 16 lower = tuple([int(l) for l, h in kwargs.values()]) 17 upper = tuple([int(h) for l, h in kwargs.values()]) 18 binary = cv2.inRange(img, lowerb=lower, upperb=upper) 19 imshow(binary) 20 21 22# 画像を読み込む。 23img = cv2.imread("test.jpg") 24 25img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 26 27# パラメータ lower, upper を設定するスライダー 28num_channels = 1 if img.ndim == 2 else img.shape[2] 29parts = {} 30for i in range(num_channels): 31 slider = widgets.SelectionRangeSlider( 32 options=np.arange(256), index=(0, 255), description=f"channel {i}" 33 ) 34 slider.layout.width = "400px" 35 36 parts[f"channel{i}"] = slider 37 38# ウィジェットを表示する。 39widgets.interactive(inRange, **parts)
投稿2019/10/15 12:19
編集2019/10/16 05:52総合スコア21956
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/16 04:05
2019/10/16 04:16 編集
2019/10/16 04:34
2019/10/16 04:38 編集
2019/10/16 04:39
2019/10/16 05:31
2019/10/16 05:55 編集
2019/10/16 06:22
2019/10/16 06:30
2019/10/16 06:37
2019/10/16 06:39
2019/10/16 07:18