<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OpenCV | ITとガジェットあれこれ</title>
	<atom:link href="https://sandambara.com/category/opencv/feed" rel="self" type="application/rss+xml" />
	<link>https://sandambara.com</link>
	<description>sandambara.com</description>
	<lastBuildDate>Wed, 03 Mar 2021 02:40:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://sandambara.com/wp-content/uploads/2021/03/icon.ico</url>
	<title>OpenCV | ITとガジェットあれこれ</title>
	<link>https://sandambara.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>M1 Mac+Python+YOLO V3で物体検出に挑戦</title>
		<link>https://sandambara.com/yolo-v3-with-python-using-m1-mac?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=yolo-v3-with-python-using-m1-mac</link>
					<comments>https://sandambara.com/yolo-v3-with-python-using-m1-mac#respond</comments>
		
		<dc:creator><![CDATA[sandambara]]></dc:creator>
		<pubDate>Wed, 03 Mar 2021 00:00:00 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[OpenVINO]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[YOLO]]></category>
		<guid isPermaLink="false">https://sandambara.com/?p=1736</guid>

					<description><![CDATA[<p>随分以前ですがこちらのサイトを参考にYOLOで遊んでいました。 AIと聞くと敷居が高いように感じますが、このように情報発信してくださる方々のおかげで気軽にAIと関わりをもてるのは本当に有難いことです。感謝！ ということで [&#8230;]</p>
The post <a href="https://sandambara.com/yolo-v3-with-python-using-m1-mac">M1 Mac+Python+YOLO V3で物体検出に挑戦</a> first appeared on <a href="https://sandambara.com">ITとガジェットあれこれ</a>.]]></description>
										<content:encoded><![CDATA[<p>随分以前ですがこちらのサイトを参考にYOLOで遊んでいました。</p>





<a rel="noopener" href="https://ai-coordinator.jp/yolo-v3-pytorch" title="高速化したYOLO V3を使ったリアルタイム物体検出 for PyTorch" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://ai-coordinator.jp/wp-content/uploads/2018/04/895dc3969fe3a9bee9d2e70d33c6f13f.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">高速化したYOLO V3を使ったリアルタイム物体検出 for PyTorch</div><div class="blogcard-snippet external-blogcard-snippet">正確さと高速化に成功したYOLO V3 こんにちは。 AI coordinator管理人の清水秀樹です。 最近はラズパイにハマってdeeplearningの勉強をサボっておりましたが、YOLO V2をさらに高速化させたYOLO V3がリリー...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://ai-coordinator.jp/yolo-v3-pytorch" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ai-coordinator.jp</div></div></div></div></a>




<p>AIと聞くと敷居が高いように感じますが、このように情報発信してくださる方々のおかげで気軽にAIと関わりをもてるのは本当に有難いことです。感謝！</p>



<p>ということで、今回メインマシンをM1 Macに移行したので久しぶりにYOLOによる物体検出に挑戦してみました。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">YOLOとは？</a></li><li><a href="#toc2" tabindex="0">動作環境</a></li><li><a href="#toc3" tabindex="0">セットアップしていきなり実行</a></li><li><a href="#toc4" tabindex="0">内蔵カメラでリアルタイム物体検出をするには</a></li><li><a href="#toc5" tabindex="0">Miniforge3インストール</a></li><li><a href="#toc6" tabindex="0">PyTorchインストール</a></li><li><a href="#toc7" tabindex="0">リアルタイム物体検出</a></li><li><a href="#toc8" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">YOLOとは？</span></h2>



<p>You Only Look Onceの頭文字を取ってヨーローです。以前ご紹介したOpenCVやOpenVINOとはまた異なる仕組みで物体検出を行います。</p>



<p>「一度しか見ないから早いんだな」くらいの感じでいきましょう。逆の言い方をすれば他の仕組みは「何度も見ている」ということですね。</p>



<h2 class="wp-block-heading"><span id="toc2">動作環境</span></h2>



<p>私の環境です。</p>



<ul class="wp-block-list"><li>MacBook Pro M1（メモリ8GB　SSD512GB）</li><li>macOS Big Sur(バージョン11.2.2）</li><li>Miniforge3</li><li>Python 3.8</li></ul>



<h2 class="wp-block-heading"><span id="toc3">セットアップしていきなり実行</span></h2>



<p>ターミナルを起動し下記のコマンドを順に入力してきましょう！</p>



<script src="https://gist.github.com/sandambara/d4f9808417e66c4776fdd5cf320d31ad.js"></script>



<p>解析がスタートします。</p>



<script src="https://gist.github.com/sandambara/48e7890810828863993d00f103c85171.js"></script>



<p>あっという間に終わり、解析結果が~/darknet/predictions.jpgに出力されます。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="768" height="576" src="https://sandambara.com/wp-content/uploads/2021/03/predictions-1.jpg" alt="" class="wp-image-1741" srcset="https://sandambara.com/wp-content/uploads/2021/03/predictions-1.jpg 768w, https://sandambara.com/wp-content/uploads/2021/03/predictions-1-300x225.jpg 300w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>何度見てもすごい！と感じずにいられません。</p>



<h2 class="wp-block-heading"><span id="toc4">内蔵カメラでリアルタイム物体検出をするには</span></h2>



<p>ここからは事前準備が必要です。具体的にはPythonとPyTorchのセットアップをはじめに行いますが、M1 Macの場合は環境構築方法が限定されますので注意が必要です（2021年3月1日時点）。</p>



<h2 class="wp-block-heading"><span id="toc5">Miniforge3インストール</span></h2>



<p>Python実行環境にはMiniforge（Anacondaの小型版と思っておけば良いと思います）を利用します。</p>



<p>まずは<a rel="noopener" href="https://github.com/conda-forge/miniforge" target="_blank">こちらのサイトのDownload</a>から「OS X arm64(Apple Silicon)」を取得し、以下のコマンドを実行します。</p>



<pre class="wp-block-code"><code>bash Miniforge3-MacOSX-arm64.sh</code></pre>



<p>インストールが終わったらYOLO用の環境を作成しましょう。Pythonは3.8にしました。</p>



<pre class="wp-block-code"><code>conda create -n yolo python=3.8</code></pre>



<p>ここは「conda create -n 好きな名前 python=希望バージョン」です。こんな風に環境を作ったり削除したりできるのは便利ですね。ちなみに削除は「conda remove -n 名前 &#8211;all」です。allの前はハイフンが2つ続きますので注意してくださいね。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box sticky block-box">
<p>「動かねー」という方はパスが通っているか確認しましょう！</p>



<p>~/.zshrc</p>



<p>source ~/miniforge3/etc/profile.d/conda.sh</p>
</div>



<p>では、早速作成した環境へ入って作業を続けます。</p>



<pre class="wp-block-code"><code>conda activate yolo</code></pre>



<h2 class="wp-block-heading"><span id="toc6">PyTorchインストール</span></h2>



<p>以前はPyTorchの公式サイトから環境に応じたコマンドを取得していました。</p>





<a rel="noopener" href="https://pytorch.org/get-started/locally/" title="Get Started" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://pytorch.org/wp-content/uploads/2025/01/pytorch_seo.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Get Started</div><div class="blogcard-snippet external-blogcard-snippet">Set up PyTorch easily with local installation or supported cloud platforms.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://pytorch.org/get-started/locally/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">pytorch.org</div></div></div></div></a>




<p>M1 Macの場合は別の手順を踏まねばなりません。環境構築全般、参考にさせて頂いた記事をご紹介させて頂きます。良記事公開、有難うございます！</p>





<a rel="noopener" href="https://qiita.com/onkyo14taro/items/6ce72982ae5a43fdee63" title="M1搭載MacにおけるPytorchのインストール - Qiita" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRmF2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbSUyRnUlMkYxNTEwMDkzMSUzRnYlM0Q0P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZiZz1GRkZGRkYmZm09cG5nMzImcz1mZTJiMTQyOWFkYWIyYWE3NDMxOWJhNTBiZTUxMDhjMw%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3D27789a507bbccab539c95ab275d5e03c?ixlib=rb-4.0.0&#038;w=1200&#038;fm=jpg&#038;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9TTElRTYlOTAlQUQlRTglQkMlODlNYWMlRTMlODElQUIlRTMlODElOEElRTMlODElOTElRTMlODIlOEJQeXRvcmNoJUUzJTgxJUFFJUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgyJUI5JUUzJTgzJTg4JUUzJTgzJUJDJUUzJTgzJUFCJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9MDk5N2NlMDlkNjRiZTJiNTQyYzFlNThhNTJkMGZlMmY&#038;mark-x=120&#038;mark-y=112&#038;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBvbmt5bzE0dGFybyZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTYyMjQ0MWI4ZTBmMTkzODE0ZTJiMjBiMTUyMDU5NGVh&#038;blend-x=242&#038;blend-y=480&#038;blend-w=838&#038;blend-h=46&#038;blend-fit=crop&#038;blend-crop=left%2Cbottom&#038;blend-mode=normal&#038;s=4cb937510a47ef6bcfc47312718f8e5e" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">M1搭載MacにおけるPytorchのインストール - Qiita</div><div class="blogcard-snippet external-blogcard-snippet">重要！（2021-06-19現在） 継続的に更新されている，M1 Macの環境構築に関する次のとてもためになる記事でも言及されていますが，現在，簡単にpip installでインストール可能になりました。 pip install torch...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://qiita.com/onkyo14taro/items/6ce72982ae5a43fdee63" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">qiita.com</div></div></div></div></a>






<a rel="noopener" href="https://zenn.dev/karaage0703/articles/0ab9e654cfb0ec" title="Apple Silicon(M1) Mac+tensorflow-macosでディープラーニングする" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://res.cloudinary.com/zenn/image/upload/s--rNeUG1Ht--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Apple%2520Silicon%2528M1%2529%2520Mac%252Btensorflow-macos%25E3%2581%25A7%25E3%2583%2587%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%2597%25E3%2583%25A9%25E3%2583%25BC%25E3%2583%258B%25E3%2583%25B3%25E3%2582%25B0%25E3%2581%2599%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:%25E3%2581%258B%25E3%2582%2589%25E3%2581%2582%25E3%2581%2592%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2hDZEtvakJfZXdDTjNCV1Z0WXIteFNIZ0hmRjlXZmt3QzI5c0Y0aXYwPXMyNTAtYw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACAGSGT" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Apple Silicon(M1) Mac+tensorflow-macosでディープラーニングする</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://zenn.dev/karaage0703/articles/0ab9e654cfb0ec" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">zenn.dev</div></div></div></div></a>




<p>まずは必須となるものをインストールしていきます。</p>



<pre class="wp-block-code"><code>conda install numpy
conda install matplotlib
conda install pandas
conda install opencv</code></pre>



<p>続いてPythonのバージョンに応じ下記のリンクからwheel（パッケージ）をダウンロードします。3.8用はGoogle Drive、3.9用はgitへのリンクです。</p>



<p><a rel="noopener" href="https://drive.google.com/file/d/1e-7R3tfyJqv0P4ijZOLDYOleAJ0JrGyJ/view" target="_blank">Python 3.8</a>　<a rel="noopener" href="https://github.com/wizyoung/AppleSiliconSelfBuilds/blob/main/builds/torch-1.8.0a0-cp39-cp39-macosx_11_0_arm64.whl" target="_blank">Python 3.9</a></p>



<p>警告が表示されたら続行できるように選択を続け、次にインストールです。</p>



<script src="https://gist.github.com/sandambara/5624c47e3dc51921c5f7e520ee31f3b6.js"></script>



<p>コンソールの最終行はこんな感じです。</p>



<pre class="wp-block-code"><code>Successfully installed torch-1.8.0a0 typing-extensions-3.7.4.3</code></pre>



<p>セットアップを続けます。</p>



<script src="https://gist.github.com/sandambara/33882654450464cde5f829d714e22048.js"></script>



<p>imagesにdog.jpgを指定した結果はこんな感じです。</p>



<script src="https://gist.github.com/sandambara/83fe6bebac4d0dc4a42393c486a48547.js"></script>



<p>フォルダ「det」に「det_dog.jpg」というファイルが作成されていることを確認しましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="576" src="https://sandambara.com/wp-content/uploads/2021/03/det_dog-1.jpg" alt="" class="wp-image-1756" srcset="https://sandambara.com/wp-content/uploads/2021/03/det_dog-1.jpg 768w, https://sandambara.com/wp-content/uploads/2021/03/det_dog-1-300x225.jpg 300w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>下記サンプルはimgsに「img3.jpg」を指定しました。</p>



<script src="https://gist.github.com/sandambara/237fca1d9877502482ad3417335ca428.js"></script>



<p>画像はこんな感じです（det_img3.jpg）。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="500" height="406" src="https://sandambara.com/wp-content/uploads/2021/03/det_img3.jpg" alt="" class="wp-image-1747" srcset="https://sandambara.com/wp-content/uploads/2021/03/det_img3.jpg 500w, https://sandambara.com/wp-content/uploads/2021/03/det_img3-300x244.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /><figcaption>すごい！</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc7">リアルタイム物体検出</span></h2>



<p>お待たせしました。カメラを使ってリアルタイム物体検出のお時間です。</p>



<p>こちらのコマンドをどうぞ！</p>



<pre class="wp-block-code"><code>python cam_demo.py</code></pre>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="YOLOV3" width="1256" height="942"  data-youtube="eyJ0aXRsZSI6IllPTE9WMyIsInZpZGVvX2lkIjoidWQwaTRhWUxROWMifQ==" src="https://www.youtube.com/embed/ud0i4aYLQ9c?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p>自分が映り込まないようかなりアクロバティックな姿勢で撮影したためツッコミどころは色々ありますがスルーでお願いしますｗ</p>



<p>iPhoneがlaptopになっていたりミニカーがcell phoneだったりはしますが、検知速度・判定結果いずれもなかなかです。ピント位置や被写体との距離を調整すればより良い結果が得られると思います。</p>



<h2 class="wp-block-heading"><span id="toc8">まとめ</span></h2>



<p>おしりたんていはpersonでした！</p>The post <a href="https://sandambara.com/yolo-v3-with-python-using-m1-mac">M1 Mac+Python+YOLO V3で物体検出に挑戦</a> first appeared on <a href="https://sandambara.com">ITとガジェットあれこれ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sandambara.com/yolo-v3-with-python-using-m1-mac/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>そのwebカメラ、Pythonで使ってみませんか？</title>
		<link>https://sandambara.com/webcamera-using-python?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=webcamera-using-python</link>
					<comments>https://sandambara.com/webcamera-using-python#respond</comments>
		
		<dc:creator><![CDATA[sandambara]]></dc:creator>
		<pubDate>Sun, 29 Nov 2020 15:30:43 +0000</pubDate>
				<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://sandambara.com/?p=1401</guid>

					<description><![CDATA[<p>コロナ禍でwebミーティングが急速に浸透しはじめた頃、スマホやタブレットでは画面が小さく「ミーティングで共有された資料が読めなくて困った」という方が多かったそうです。これは学校や塾の授業がオンラインになったけど、自分のP [&#8230;]</p>
The post <a href="https://sandambara.com/webcamera-using-python">そのwebカメラ、Pythonで使ってみませんか？</a> first appeared on <a href="https://sandambara.com">ITとガジェットあれこれ</a>.]]></description>
										<content:encoded><![CDATA[<p>コロナ禍でwebミーティングが急速に浸透しはじめた頃、スマホやタブレットでは画面が小さく「ミーティングで共有された資料が読めなくて困った」という方が多かったそうです。これは学校や塾の授業がオンラインになったけど、自分のPCを持っていない学生さんや子供さんの方がご苦労されたかもしれません。</p>



<p>そんな折にバカ売れしたのがwebカメラです。外付けの大きなモニタ＋デスクトップPCの組み合わせでwebカメラが付いてないよ～という方も当時は多かったと思います。</p>



<p>さて、そのWebカメラ。webミーティングやテレワーク以外でもお使いですか？</p>



<p>デジカメなどと異なり自分を写すものなので用が無ければ使わないという方が殆どだと思いますが、せっかくですからPythonでカメラを起動してみましょう！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">なぜそんなことをお勧めするのか</a></li><li><a href="#toc2" tabindex="0">検証環境と下準備</a></li><li><a href="#toc3" tabindex="0">コードはたった10行！</a></li><li><a href="#toc4" tabindex="0">実行してみよう！</a></li><li><a href="#toc5" tabindex="0">締め</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">なぜそんなことをお勧めするのか</span></h2>



<p>実はラズパイで防犯カメラを作ってみようと思いたち、以前挑戦した顔認識のコードあたりをさらおうとしたものの記憶が完全にフラッシュされていましたｗ</p>



<p><a href="https://sandambara.com/facedetection-with-opencv-python">Python+OpenCVで顔検出してみる | ITとガジェットあれこれ (sandambara.com)</a></p>



<p>で、よくよくコードを読み進めると、カメラを起動させるだけならほんの数行なんですよね。</p>



<p>そこから何か別のことをするのは次のステップということで、「こんな簡単にカメラを使えるんだ！」というのを体験して頂けたらと思い今回の記事を書きました。</p>



<h2 class="wp-block-heading"><span id="toc2">検証環境と下準備</span></h2>



<p>Windows 10 Pro (64bit) 2004＋Python3.6.1ですが、元々ラズパイで使っていたコードなので3系のPythonとwebカメラが使える環境であれば問題ありません。 </p>



<p>はじめにOpenvCVをインストールします。</p>



<pre class="wp-block-code"><code>pip install opevcv-python</code></pre>



<p>Zoomなどwebカメラを利用するアプリケーションが起動していたら終了させてください。このときアプリケーションは最小化ではなく必ず終了させましょう。</p>



<h2 class="wp-block-heading"><span id="toc3">コードはたった10行！</span></h2>



<p>空白行を除けばたった10行のコードでwebカメラを起動させることができます。</p>



<script src="https://gist.github.com/sandambara/b7d10a15b1ecbbdd923316f5fb630e23.js"></script>



<p>3行目のカッコ内の数字に注目です。</p>



<pre class="wp-block-code"><code>cap = cv2.VideoCapture(0)</code></pre>



<p>内蔵のwebカメラをお使いの場合はゼロのままで大丈夫ですが、webカメラ内蔵PCに外付けwebカメラをつなぎ、そちらを使いたい場合はゼロではなく1に変えます。</p>



<pre class="wp-block-code"><code>cap = cv2.VideoCapture(1)</code></pre>



<p>7行目のカッコの中、1つ目の引数は好きな文字列でOKです（ウインドウのタイトルです）。</p>



<h2 class="wp-block-heading"><span id="toc4">実行してみよう！</span></h2>



<p>先ほどのスクリプトをwebcamera.pyとして任意の場所に保存したら、コマンドプロンプトから実行してみます。</p>



<pre class="wp-block-code"><code>python webcamera.py</code></pre>



<p>もし[Errno 2] No such file or directoryとエラーになった場合はcdコマンドでwebcamera.pyを保存したディレクトリへ移動するか、webcamera.pyをフルパスで記述しましょう（例：python c:\sandambara\webcamera.py）。映像は映し出されましたか？</p>



<hr class="wp-block-separator"/>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="641" height="508" src="https://sandambara.com/wp-content/uploads/2020/11/image-1.png" alt="" class="wp-image-1419" srcset="https://sandambara.com/wp-content/uploads/2020/11/image-1.png 641w, https://sandambara.com/wp-content/uploads/2020/11/image-1-300x238.png 300w" sizes="(max-width: 641px) 100vw, 641px" /></figure></div>



<hr class="wp-block-separator"/>



<p>先日愛用していたイヤフォンが2つ続けて壊れてしまい、悲しみで気を失っている間にApple Storeで握りしめていたAir Pods Proです。<span class="bold"><span class="marker-red">金欠です（真顔）</span></span></p>



<h2 class="wp-block-heading"><span id="toc5">締め</span></h2>



<p>PCに繋がったデバイスをコードで操作するのはとても難しそうなイメージがありますが、拍子抜けするほど簡単でした。Python使えばこんなこともできるんだということを是非体験してみてくださいね。</p>



<script type="text/javascript">amzn_assoc_ad_type ="responsive_search_widget"; amzn_assoc_tracking_id ="sandambara02-22"; amzn_assoc_marketplace ="amazon"; amzn_assoc_region ="JP"; amzn_assoc_placement =""; amzn_assoc_search_type = "search_widget";amzn_assoc_width ="auto"; amzn_assoc_height ="auto"; amzn_assoc_default_search_category =""; amzn_assoc_default_search_key ="webcamera";amzn_assoc_theme ="light"; amzn_assoc_bg_color ="FFFFFF"; </script><script src="//z-fe.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;Operation=GetScript&amp;ID=OneJS&amp;WS=1&amp;Marketplace=JP"></script>The post <a href="https://sandambara.com/webcamera-using-python">そのwebカメラ、Pythonで使ってみませんか？</a> first appeared on <a href="https://sandambara.com">ITとガジェットあれこれ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sandambara.com/webcamera-using-python/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Python+OpenCVで顔検出してみる</title>
		<link>https://sandambara.com/facedetection-with-opencv-python?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=facedetection-with-opencv-python</link>
					<comments>https://sandambara.com/facedetection-with-opencv-python#respond</comments>
		
		<dc:creator><![CDATA[sandambara]]></dc:creator>
		<pubDate>Sat, 04 Jul 2020 08:59:29 +0000</pubDate>
				<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[開発]]></category>
		<guid isPermaLink="false">https://sandambara.com/?p=566</guid>

					<description><![CDATA[<p>目次 OpenVINOとOpenCV検証環境顔判定の仕組みコード OpenVINOとOpenCV 以前「OpenVINOに挑戦」で顔認識に挑戦する内容の記事を書きました。OpenVINOとは「Open Visual In [&#8230;]</p>
The post <a href="https://sandambara.com/facedetection-with-opencv-python">Python+OpenCVで顔検出してみる</a> first appeared on <a href="https://sandambara.com">ITとガジェットあれこれ</a>.]]></description>
										<content:encoded><![CDATA[<div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">OpenVINOとOpenCV</a></li><li><a href="#toc2" tabindex="0">検証環境</a></li><li><a href="#toc3" tabindex="0">顔判定の仕組み</a></li><li><a href="#toc4" tabindex="0">コード</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">OpenVINOとOpenCV</span></h2>



<p>以前「OpenVINOに挑戦」で顔認識に挑戦する内容の記事を書きました。OpenVINOとは「Open Visual Inference and Neural network Optimization」の略なのですが、ごっちゃになり易いものにOpenCV (Open Source Computer Vision Library)があります。今回はこのOpenCVで顔認識に挑戦しました。</p>



<h2 class="wp-block-heading"><span id="toc2">検証環境</span></h2>



<p>検証環境はWindows10 Pro 64bit バージョン2004、Pythonは3.6.1です。WEBカメラはラップトップ内蔵のものでも外付けでもOKですが、「内蔵PCに外付けをつないでいる」かつ「外付けを使いたい」ときは1か所コードの修正が必要です（コード中にコメント入れています）。ZoomなどWEBカメラを利用するアプリケーションも予め終了させておきます（最小化ではダメです）。</p>



<p>「OpenCVまだ入れてないよ～」という方は先にインストールしておきましょう！</p>



<pre class="wp-block-code"><code>pip install opencv-python</code></pre>



<h2 class="wp-block-heading"><span id="toc3">顔判定の仕組み</span></h2>



<p>OpenVINOではインテルが作成したモデル（.xmlと.bin）を利用して画像（映像）を判定していました。OpenCVでは「カスケード分類器」と呼ばれるものがこれにあたります。</p>



<p>カスケード分類器は「正解」と「不正解」をひたすら判定させ続けて自分で作成することも可能ですが、膨大な量のサンプルが必要です。「立っている者は親でも使え」の精神で、ここは必要に応じ既存のものをダウンロードして利用しましょう。</p>





<a rel="noopener" href="https://opencv.org/releases/" title="Releases" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fopencv.org%2Freleases%2F?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Releases</div><div class="blogcard-snippet external-blogcard-snippet">OpenCV Releases Are Brought To You By Intel Intel is a multinational corporation known for its semiconductor products, i...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://opencv.org/releases/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">opencv.org</div></div></div></div></a>




<p>gitでもダウンロードできますが、ファイルが不完全で実行時にエラーが出る場合がありますので公式から入手することをお勧めします。</p>



<p>上記サイトで任意のバージョンの「Sources」からzipをダウンロードし解凍→任意のディレクトリに保存してください。このフルパスが後ほど必要になりますので、忘れないように注意してください。</p>



<h2 class="wp-block-heading"><span id="toc4">コード</span></h2>



<p>ググって調べ自分で手を入れたものです。例によって誤認と思われる個所がありましたら是非ご指摘ください。</p>



<pre class="wp-block-code"><code># -*- coding: utf-8 -*-
import cv2

# 分類器は下記から取得
#https://opencv.org/releases/

# カスケード分類器保存先
your_path = 'c:/opencv/'

# カスケード分類器ファイル名
cascade_path = your_path + "haarcascade_frontalface_alt.xml"

# カスケード分類器より特徴量取得
# カスケード分類器は...frontalface...の中から好きなものを選択
# 私の環境ではhaarcascade_frontalface_alt.xmlが一番好成績でした
cascade = cv2.CascadeClassifier(cascade_path)

# WEBカメラの映像取得
# 内蔵カメラあり＋外付けの環境で外付けを使いたいときは(0)を(1)に変更
image = cv2.VideoCapture(0)

while True:

	key = cv2.waitKey(1)
	
	if key != -1:
        	break

	ret, frame = image.read()

	# 速度向上のためグレースケール変換
	image_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)	

	# 判定
	facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=2, minSize=(30, 30))
	
	# 検出した場合
	if len(facerect) > 0:

		# 矩形作成
		# 第4引数で矩形の色を選択するがRGB形式で指定するとintegerしかダメと怒られます
		for rect in facerect:
			cv2.rectangle(frame, tuple(rect&#91;0:2]), tuple(rect&#91;0:2]+rect&#91;2:4]), 255, 2)
	
	# 表示
	cv2.imshow('image', frame)

image.release()
cv2.destroyAllWindows()</code></pre>



<p>いかがでしょう。私は「以外に簡単！」という印象でした。正直なところ認識精度はOpenVINOの方が優れいてる印象ですが、利用環境構築の容易さはpipを1度唱えるだけで済むOpevCVの方が圧倒的に楽ですね。認識精度も利用するカスケード分類器や判定のパラメータをチューニングすればもう少し向上するのでは、と期待しています。</p>



<p>皆さんも是非お試しください！</p>



<script type="text/javascript">amzn_assoc_ad_type ="responsive_search_widget"; amzn_assoc_tracking_id ="sandambara02-22"; amzn_assoc_marketplace ="amazon"; amzn_assoc_region ="JP"; amzn_assoc_placement =""; amzn_assoc_search_type = "search_widget";amzn_assoc_width ="auto"; amzn_assoc_height ="auto"; amzn_assoc_default_search_category =""; amzn_assoc_default_search_key ="OpenCV";amzn_assoc_theme ="light"; amzn_assoc_bg_color ="FFFFFF"; </script><script src="//z-fe.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;Operation=GetScript&amp;ID=OneJS&amp;WS=1&amp;Marketplace=JP"></script>The post <a href="https://sandambara.com/facedetection-with-opencv-python">Python+OpenCVで顔検出してみる</a> first appeared on <a href="https://sandambara.com">ITとガジェットあれこれ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sandambara.com/facedetection-with-opencv-python/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
