인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
Programming

/

etc. (Programming)

Python無料講義(活用編6) - 画像処理(OpenCV)

Pythonを活用して、コンピュータビジョンと画像処理の最強者であるOpenCVライブラリの使い方を習得し、様々な面白いプロジェクトを通じて実生活に画像処理を応用する方法を勉強します。

OpenCV

初級者のための講座です。

こんなことが学べます

  • 画像処理に欠かせないOpenCVの使い方

  • 半自動ドキュメントスキャナの開発(ミニプロジェクト#1)

  • 写真でカードを検出して分類するプログラムを開発(ミニプロジェクト#2)

  • 顔認識でキャラクターをかぶせる(実戦プロジェクト)

多様で面白いプロジェクトを通して学ぶ
Python活用画像処理講義!

📢 講義受講前にご確認ください。

  • 講義の中の開発環境はJupyter Notebook、Python 3.xです。

日常の中で毎日会う
画像処理

 

ほんの数分前まででも、レストランやカフェなど、どんな場所に訪れる際にQRコードを認識しなければなりませんでした。 QRチェックインを一度でもやってみたら、皆さんはすでに画像処理を経験されたのです。 スマートフォン画面に浮かんでいるQRコードを店舗の入り口に設置された機器に適した距離で持っていくと、自動的に領域を探してQRを認識することになります。

(出典: https://www.emkat.com/products/emkat-temperature-screening-kiosk/)

体温測定も一度くらいしてみました。人の身長にタブレットを設置し、そこに人の顔を当てると自動的に顔の領域を検出し、体温を測定して正常かどうかを知らせることもできます。

このように、画像処理(コンピュータビジョン)とは、画像データから有用な情報を得るために画像を操作して分析する過程を意味します。カメラで認識された画像の中でQRコードを、または人の顔を自動的に検出するほか、本当に多くの分野で活用されています。

顔フィルター、こんなものみんな一度はやってみましたね?

(ソース:https://play.google.com/store/apps/details?id=com.campmobile.snow&hl=ja)

他にもいくつか考えてみると、
ニュースに書き出すインタビュー動画で人の顔を探してその部分だけモザイクするか、
車のブラックボックス動画をアップロードしたいのですが、他の車のナンバープレートを自動的に見つけてモザイクしたり、
あ、ナンバープレートなら有料駐車場入って出る時も自動で認識をしますか?

ユーザーに似合う服をオススメするか、
自動的に体の部分に仮想で服を着てみるとか、
ハンサムか醜いか確認する面白いコンテンツも..似たような芸能人とか、
手の動きを認識してマイナリティレポートに出てくるシュートすることを作るとか、
セキュリティ検索台を通過する際に所持してはいけない物品を自動的に認識するなど。

OpenCV

画像処理はOpenCVの助けを借りて進めます。
OpenCVはリアルタイム画像処理のためのオープンソースライブラリですが、とてもちょうど最高です。


レッスンでは、OpenCVを使用して何ができるかをさまざまな例で1つずつ学びます。

#1 例

元の画像をさまざまな方法で変形させてみましょう。

オリジナル画像

回す

カット

サイズを小さくする

白黒効果

ぼやけさせる

簡単に見えますか? 😀
もう少し深く入りましょう。

#2 例

本のすべての文字部分を取得しようとしています。

オリジナル画像

本を読む写真が1枚あります。

グレースケール変換

まず、画像を単純化するためにgrayscaleに変換します。カラーよりもモノクロがはるかにどうしてももっとシンプルでしょう?

threshold関数

赤く塗られた領域の文字を取得するためにOpenCVのthresholdという関数を利用できます。でもちょうど欲しい部分がよく見えませんね。これは日光の影によって明るい部分と暗い部分が共存しているのでそうです。イメージ全体を基準に適用してみるとそういうことです。

adaptive threshold 適用

こういう時はadaptive thresholdというものを適用すれば、どうですか、はるかに良いでしょうか?これにより、画像を小さな領域に分けて処理してみると、日光(または照明など)による陰影の違いがあっても、本の文字部分を鮮明に見つけることができます!

#3 例

画像処理には侵食、膨張というものもありますが、これらを適度に組み合わせたオープン&クローズ操作というのも簡単な例とともに勉強します。それぞれどのように動作するか詳細な説明はもちろん、どのような場合に書くべきか簡単に把握することができます。

オープン操作

クローズ操作

うーん...この写真を見てはよくわからないかもしれません😊
こんなこともしてみることができますよ!

#4 例

画像内である領域を見つけて変形を与えると、このように台形の形の画像から長方形の形で画像を広げることもできます。

#5 例

目的の領域を選択して抽出してみる、半自動ドキュメントスキャナも作成できます。
例では、カードのイメージにしましょう。

もう少し進むと輪郭線検出ということで、画像内で自動的にカードや文書のある領域を検出して抽出してみることもできます。

講義では扱いませんが、文字領域を検出して読み取ればどんな種類のカードがあるのか​​簡単に確認できます。名刺管理プログラムとして応用すれば、文字を読み出して名前/電話番号/メールアドレスなどを分類して保存することもできます。非対面口座開設サービスを提供する立場とすれば、身分証明書から希望する領域の文字を読み込んで自動的に入力項目を記入し、また住民登録番号部分は分かってモザイクまたは隠す処理をしてみることもできますね。

#6 例

このような画像処理技術を通じて人の顔を探して面白い何かをするのが抜けられないでしょうか?
プロジェクトではmediapipeというパッケージの助けを受けます。 (https://google.github.io/mediapipe/)

ホームページに紹介されているように、顔検出だけでなく物事認識、モーション認識など、とても多様で面白い作業をしてみることができます。

私たちはその中で最初に導入された顔検出のサンプルコードを応用します。これを利用すると、画像内で人の顔を見つけて目、鼻、口、耳の位置をわずか数行のコードで見つけることができ、そこに図形も描くことができます。

図形ではなく、動物のイメージを一度書き込んでみますか?たわごとで描いた耳と鼻。

これを書いてみると

こうなりますね🤣

今終わりました。本当のようなキャラクターイメージを一つ救ってきて上書きしてみると

織!このおじさんの顔にかわいいキャラクターイメージをかぶってみました。
実際、この過程で透明度処理のための作業が少しありますが、講義の後半で非常に詳しく説明するので心配しなくても構いません。

ここまで勉強すると、皆さんの頭の中にはいろいろな創造的なアイデアが浮かび上がり、すぐに適用したいという欲求が生じることもあります。もちろん簡単に実装することもできます。あざのようにいたずらな番組も作れるんですよ✨

これらすべてが約5時間40分で十分です。

それでは、今すぐ始めましょうか?

 

Designed by Freepik
 https://www.freepik.com

Images, Videos by Pixabay, Pexels
https://www.pixabay.com
https://www.pexels.com

こんな方に
おすすめです!

学習対象は
誰でしょう?

  • Pythonの基本を勉強した方

  • Pythonを実生活に活用したい人

  • さまざまな画像処理技術で独自のプロジェクトを完成する方

こんにちは
です。

96,952

受講生

2,878

受講レビュー

908

回答

4.9

講座評価

11

講座

유튜브에서 코딩 교육 채널을 운영하고 있는 나도코딩입니다.
누구나 쉽고 재미있게 코딩을 공부하실 수 있도록 친절한 설명과 쉬운 예제로 강의합니다.
코딩, 함께 하실래요? 😊

🧡 유튜브 나도코딩
🎁 코딩 자율학습 나도코딩의 파이썬 입문
📚 코딩 자율학습 나도코딩의 C 언어 입문

カリキュラム

全体

48件 ∙ (5時間 40分)

講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価を受けていない講座です。
みんなに役立つ受講レビューを書いてください!