質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

10283閲覧

機械学習で色を識別させたい

jun_endo

総合スコア56

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2018/07/02 07:52

編集2018/07/04 00:44

###やりたいこと

pythonの機械学習ライブラリを使って、
画像から文字の色で認識させたい。

例)青色の100200という文字を認識して、100200というテキストを出力したい

出力したときは、テキストの色は黒でもいい。
とにかく、青色のテキストを認識させたい。

###知りたいこと
・機械学習でテキストの色で認識させる方法
![イメージ説明

このような画像から
青色の数字のみを認識して、
なおかつ、コマンドラインに出力させたい

###自分の考えている方法
0 . 画像から青くなっているところ(複数箇所ある)を認識させる
1 . 認識箇所のみをそれぞれ文字認識にかける
2 . 認識した文字を出力する。

上記の手順でやろうと考えています。
その中で、番号0の手順でどうしても色で認識させたいのです。

なので、色認識の方法が何かあれば教えてください。
そのほか、私の考えている方法で、
間違っていることや、何か付け足すことなどありましたら教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2018/07/02 18:52

質問文の日本語がわかりづらく、説明もざっくりしていて、何をしたいのかがよくわかりません。もう少しわかりやすく書くと回答がつきやすいと思います
shiron46

2018/07/03 10:05

どんな画像を対象にするのでしょうか?認識したい文字色が完全な青(#0000ff)か、そうでないかによっても方法は変わります。例となる画像などがあると分かりやすくなると思います。
jun_endo

2018/07/05 00:15

編集しました確認お願いします。
guest

回答1

0

ベストアンサー

目的が複数書かれていますが、とりあえず「青色のテキストを認識させたい。」について回答します。
対象が非常に理想的な画像なので、機械学習を使う必要はないと思います。

その中で、番号0の手順でどうしても色で認識させたいのです。

については、画素が青(というより水色っぽいので[R, G, B]=[0, 128, 255]あたり)に近いなら黒、そうでなければ白、といった具合に2値化するだけで抽出できます。
あとは輪郭検出をしてあげれば数字の認識に使えるのではないでしょうか。


上述した方法で2値化した対象画像です。
多少のJPEGノイズはありますが、ほぼ問題なく抽出できています。
イメージ説明


使用したコード

Python

1import cv2 2import numpy as np 3 4 5def extract_by_colors(img_in, r, g, b, margin): 6 # 取得する色の範囲を指定 7 lower_r = max(r - margin, 0) 8 upper_r = min(r + margin, 255) 9 lower_g = max(g - margin, 0) 10 upper_g = min(g + margin, 255) 11 lower_b = max(b - margin, 0) 12 upper_b = min(b + margin, 255) 13 lower = np.array([lower_b, lower_g, lower_r]) 14 upper = np.array([upper_b, upper_g, upper_r]) 15 16 # 指定した色に基づいてマスク画像を作成し、元画像をマスク 17 img_out = cv2.bitwise_and(img_in, img_in, mask=cv2.inRange(img_in, lower, upper)) 18 19 # 2値化 20 img_gray = cv2.cvtColor(img_out, cv2.COLOR_RGB2GRAY) 21 dummy, img_out = cv2.threshold(img_gray, 50, 255, cv2.THRESH_BINARY_INV) 22 23 return img_out 24 25 26if __name__ == "__main__": 27 img_in = cv2.imread("input.jpg") 28 img_out = extract_by_colors(img_in, 0, 128, 255, 127) 29 cv2.imwrite("output.jpg", img_out)

投稿2018/07/05 11:22

編集2018/07/06 11:39
shiron46

総合スコア111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jun_endo

2018/07/06 00:37

これはOpenCVを使っていますか? 私がいろいろ調べたところ、OpenCVの方法しか見つからなかったので、、、 もしよければ、変換したときのプログラムを 見せていただけないでしょうか? 自分なりに解釈して、うまく活用したいです。
shiron46

2018/07/06 11:43

OpenCVを使っています。使った方が楽なので。 コードは載せておきましたので良ければ参考にしてみてください。 やっつけ感は否めないですが、ちゃんと動くはずです。
jun_endo

2018/07/08 23:59

ありがとうございます。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問