タグ

opencvに関するniidomeのブックマーク (27)

  • python/OpenCVで透過pngをオーバレイする - Blanktar

    昨日のリアルタイムな笑い男を実装するために使っていた画像の合成っていうかオーバレイっていうか上書きっていうか、とにかく笑い男をかぶせる奴。ググってもなかなかそれっぽい情報が出てこないので記録。 レナさんの画像に適当に書いた星マークを乗っけます。 とりあえず透過とか考えずに乗っけるだけ乗っけたバージョン。 Copy import cv2 src = cv2.imread('star.png') # 乗っけたい画像。星。 dst = cv2.imread('lena.jpg') # 下敷きになる画像。レナさん。 width, height = src.shape[:2] # サイズを取得しておく。 # dst[上のy座標:下のy座標, 左のx座標:右のx座標] dst[0:height, 0:width] = src cv2.imwrite('out.jpg', dst) Copyimport

    python/OpenCVで透過pngをオーバレイする - Blanktar
  • Dlib による顔検出を行う Python プログラム(Dlib, Python を使用)(Windows 上)

  • 【Mac】OpenCV, Dlibカスケード分類による顔認識いろいろ(C++, Python)

    サイズは一番小さいFull HDが良いです。 カスケード分類の種類 記事で紹介するOpenCVとDlibはいずれもカスケード分類という技術を使って顔認識を行います。 カスケード分類器についてはこちらのサイトがわかりやすく、以下の3つの手法があり、OpenCVには1. Haar-Likeと2. LBPの顔認識モデルが最初から入っていました。 Haar-Like特徴量 物体の局所的な明暗差の組み合わせにより、画像を判別するLBP(Local Binary Pattern)特徴量 物体の局所的な輝度の分布の組み合わせにより、画像を判別するHOG(Histogram of Oriented Gradients)特徴量 物体の局所的な輝度の勾配方向の分布の組み合わせにより、画像を判別する Dlibは3. HOGとSVM(サポートベクタマシン)が使われているとのことです。 環境構築 必要なツールのイ

    【Mac】OpenCV, Dlibカスケード分類による顔認識いろいろ(C++, Python)
  • OpenCVのカスケード分類器を自作して画像認識 | パソコン工房 NEXMAG

    Raspberry Piのような超小型のコンピューターを使って特定の条件に一致する画像を抽出しようとする場合に、特定の条件をプログラムが判別できるようにまとめたものを「カスケード分類器」といいます。 今回はこのOpenCVのカスケード分類器を自分で作成し、任意の条件に合う画像を抽出するまでの流れをご紹介します。 カスケード分類器とは 画像認識ライブラリーであるOpenCVに含まれる物体検出機能を使用すると、画像の中に含まれる特定の物体を検出することが可能になります。 物体検出を行うためには検出したい物体がどんな特徴を持っているのか、該当する物体を含む画像と含まない画像(=学習用画像)を用意し、検出したい物体の特徴を抽出します。この特徴を「特徴量」と呼びますが、学習用画像すべての「特徴量」をまとめたデータのことを「カスケード分類器」と呼びます。 OpenCVには最初からカスケード分類器が用意

    OpenCVのカスケード分類器を自作して画像認識 | パソコン工房 NEXMAG
  • UnityでOpenCVを使ってみる

    こんにちは、コンサルティングサービス部の朝日です。 みなさんGWはいかがお過ごしでしたでしょうか。 私は積みゲーを消化しつつ、久しぶりにUnityを触っていました。 今回はUnityOpenCVを使ってみたのでそのご紹介をしたいと思います。 環境 Unity 2019.1.2f1 Windows 10 OpenCV Plus Unity OpenCVは数多くの画像処理系のアルゴリズムを含むライブラリです。 Unityで使うには、いままでは有料アセットのOpenCV for Unity等を使うか、自力でOpenCvSharpなどを入れてみるかぐらいしかなかったと思ったのですが、最近調べてみるとOpenCV plus Unityという無料アセットが公開されていたので、そちらを使ってみました。 アセットストアからダウンロード、インポートすると、 error CS0227: Unsafe co

    UnityでOpenCVを使ってみる
  • 画像処理をやるなら知らないと損!OpenCVがわかる資料まとめ

    OpenCV(オープンシーヴィ)は多機能なコンピュータビジョンライブラリで、動画や画像の処理に幅広く利用できるさまざまな機能が実装されています。 動画・画像処理を用いたアプリやサービスを開発するために、OpenCVを学びたいと思っている方は少なくないのではないでしょうか。 そこで今回は、OpenCVが学べる資料(記事・サイト・スライド)を10個ご紹介します。 OpenCVを基礎から解説している資料を中心に紹介していますので、OpenCVの学習にぜひご活用ください。 OpenCVがわかる記事・サイト 10分で学ぶOpenCV超入門 / MetaArt http://iphone.moo.jp/app/?p=1101 「画像を読み込み表示する」「画像のサイズを変更する」「画像をグレースケール化する」「画像を2値化する」、以上の4つのOpenCVを使ったプログラムについて学べる記事です。 各コー

    画像処理をやるなら知らないと損!OpenCVがわかる資料まとめ
  • OpenCV 入門 (7) - 画像上に別の画像を描画|npaka

    OpenCVで、背景画像上に透過画像をオーバーレイさせるのは、意外と面倒なので備忘録的に残します。 前回 1. Python版のソースコードimport cv2 import numpy as np from PIL import Image # 画像のオーバーレイ def overlayImage(src, overlay, location): overlay_height, overlay_width = overlay.shape[:2] # 背景をPIL形式に変換 src = cv2.cvtColor(src, cv2.COLOR_BGR2RGB) pil_src = Image.fromarray(src) pil_src = pil_src.convert('RGBA') # オーバーレイをPIL形式に変換 overlay = cv2.cvtColor(overlay, cv

    OpenCV 入門 (7) - 画像上に別の画像を描画|npaka
  • 厳密な重心の求め方

    移動体の追跡や粒子のカウントのチュートリアル中では輪郭構成点から近似的な中心座標を求める手法を紹介していましたが、今回は厳密な重心を求める手法を紹介します。まずは重心の定義から見ていきましょう。なお、同様のことをPythonでも記述可能です(こちら)。 幾何学的には、ある図形の、そのまわりでの一次モーメントが 0 であるような点のこと。図形 D (およびその周辺)の各点 r が密度 f(r) を持つなら、その重心 g とは、 を満たす点 g である(g が D 外の点であることもあり得る)。 密度が一定の場合、単体に限って言うなら、全頂点の各座標の値の算術平均をその座標の値として持つ点はその単体の重心となる。 [Wikipediaより] moments関数について ポリゴンまたはラスタライズされた形状の,3次までのモーメントを求める、moments関数を使用します。 関数momentsは,

    厳密な重心の求め方
  • Pythonで図形の輪郭の大きさを調べる(OpenCV編)

    import cv2 im = cv2.imread('test.png') im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) retval, im_bw = cv2.threshold(im_gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # 輪郭の検出 contours, hierarchy = cv2.findContours(im_bw, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) # 輪郭を1つずつ書き込んで出力 for i in range(len(contours)): im_con = im.copy() print('ID', i, 'Area', cv2.contourArea(contours[i])) im_con = cv2

  • OpenCVで動画の背景と動体を分離してみる - Qiita

    はじめに OpenCV(Open Source Computer Vision Library)はBSDライセンスの映像/画像処理ライブラリ集です。画像のフィルタ処理、テンプレートマッチング、物体認識、映像解析、機械学習などのアルゴリズムが多数用意されています。 OpenCVを使った動体追跡の例 (OpenCV Google Summer of Code 2015) https://www.youtube.com/watch?v=OUbUFn71S4s インストールと簡単な使い方はこちら OpenCV 3(core + contrib)をPython 3の環境にインストール&OpenCV 2とOpenCV 3の違い&簡単な動作チェック 静止画像のフィルター処理についてはこちら OpenCVでエッジ検出してみる 動画ファイルの処理についてはこちら OpenCVで動画をリアルタイムに変換してみ

    OpenCVで動画の背景と動体を分離してみる - Qiita
  • OpenCVで動体検出をしてみた | DevelopersIO

    概要 こんにちは、yoshimです。 今回は「OpenCV」を使って動体検出をしてみたのでご紹介します。 目次 1.やったこと 2.処理の要点 3.処理内容について少し説明 4.まとめ 5.引用 1.やったこと タイトルの通り、今回は「OpenCV」を使って動体検出をしました。 具体的には、下記のようにカメラを設置して 棚に手を入れた際に「左右、正面のどこから手を入れたか」というのを検出することを目的としています。 正面から手を入れると... こんな感じに腕の部分を検出します 左から手を入れると こんな感じです。 上記のように腕を検出した後、最終的には腕が「左右、正面」のどこからきたのかを結果として返却します。 また、今回作成したスクリプトはこちらにあります。 よかったらご参照ください。 2.処理の要点 処理の要点は、下記の3点です。 2-1.前フレーム画像との差分を抽出 「前フレーム,最

    OpenCVで動体検出をしてみた | DevelopersIO
  • [OpenCV]円の検出はハフ変換より最小外接円がいいぞ

    でも、ハフ変換は処理が重い上に精度が悪い。なーんかもたつくし、できたとしても検出された円の大きさが安定しない。 なんだかなぁと思っていると、経験ある友達が「最小外接円を使った方がいい」と教えてくれた。 実際使ってみたところ、はるかに精度いい(厳密には違うが)しスムーズだった。 「精度がいい」というよりは、円を検出してるわけじゃないから認識が簡単になっていて、精度よく検出できているように感じる、と言った方が正確かな。 デモの画像を…と思ったけど手元にボールがなかったので、スマホにボールを表示させてそれを認識させてみた。 悪くないでしょう? もちろんハフ変換が最適な場合もあると思うけど、今回は赤いボール1つだけ検出できればよかったから、最小外接円方式で十分快適だった。 検出に使うコード例を下に置いておく。 # -*- coding: utf-8 -*- import numpy as np i

  • OpenCV(Python版)でテニスのボール軌道を検出する - Qiita

    やりたいこと テニスのボール軌道を検出して、円で囲います。 最終的には、ボールの軌道や着弾点などを自動でデータ化できるようにしたいと思っています。 ボールの軌道を検出した動画 開発中のディープラーニングを用いたテニス映像解析システム。サーブ時のボールの軌道をトラッキングしてます。次は、着弾点を自動で記録できるようにしたい。 pic.twitter.com/NcwIdYLtrj — おたこ (@otakoma) 2018年5月1日 サーブのボールを検出できています。人をバウンディングボックスで検出していて、これはディープラーニングの物体検出手法(SSD)を用いてやっていますが今回は扱いません。 手順 フレーム間の差分画像を生成 画像を2値化 膨張処理して分割してしまった物体を1つの物体としてまとめる 物体の重心座標(x,y)を計算し、円で囲う 全コードは最後に記載してます。 フレーム間の差分

    OpenCV(Python版)でテニスのボール軌道を検出する - Qiita
  • 完全に理解するアフィン変換|こしあん

    アフィン変換の真価を知ったら実はかなり強かった、という話。我々はアフィン変換の当のすごさを知らない。 サンプル 非常に複雑な変換に見えますが、たった1回のアフィン変換でやっています。この記事の処理を組み合わせていけばこの処理が実装できます。 アフィン変換平面のアフィン変換とは三角形の移動(写像)を与えることで決まる変換のこと(証明は末尾参照)。 画像の回転処理にアフィン変換がよく用いられますが、アフィン変換≠回転です。アフィン変換はもっと広く処理ができますし、回転処理はその一部です。最初に回転を考えると理解しにくくなります。 OpenCVでの実装今回は数学的にあまり突っ込まずに「PythonOpenCVで自分で実装できればOK」レベルを目指します。OpenCVでは次のようにアフィン変換を行います。 import cv2 af = cv2.getAffineTransform(src,

    完全に理解するアフィン変換|こしあん
  • opencvの画像回転で、はみ出した部分が切り取られないようにする方法 - Qiita

    import cv2 import numpy as np # 画像読み込み img = cv2.imread("lena.png") h, w = img.shape[:2] size = (w, h) # 回転角の指定 angle = 40 angle_rad = angle/180.0*np.pi # 回転後の画像サイズを計算 w_rot = int(np.round(h*np.absolute(np.sin(angle_rad))+w*np.absolute(np.cos(angle_rad)))) h_rot = int(np.round(h*np.absolute(np.cos(angle_rad))+w*np.absolute(np.sin(angle_rad)))) size_rot = (w_rot, h_rot) # 元画像の中心を軸に回転する center = (w/

    opencvの画像回転で、はみ出した部分が切り取られないようにする方法 - Qiita
  • OpenCVのドキュメントが充実している - Qiita

    OpenCVのドキュメントが不足しているなんて、いつの時代のことだ。 Tutorials for contrib modules も含めてドキュメントが充実している。 OpenCV3.1 / Related Pages http://docs.opencv.org/3.1.0/pages.html http://docs.opencv.org/3.2.0/pages.html OpenCV/Examples http://docs.opencv.org/3.2.0/examples.html コードのディレクトリ: opencv/sources/samples/cpp OpenCV Tutorials http://docs.opencv.org/3.2.0/d9/df8/tutorial_root.html Introduction to OpenCV http://docs.openc

    OpenCVのドキュメントが充実している - Qiita
  • OpenCV 2.0 でマスク処理してみた。 | Always Look at the Bright Side of Life

    一定期間更新がないため広告を表示しています

    OpenCV 2.0 でマスク処理してみた。 | Always Look at the Bright Side of Life
  • 3 画像処理 — OpenCV2 プログラミングブック リファレンス編

    #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> int main(int argc, char *argv[]) { // 初期化時に塗りつぶす cv::Mat red_img(cv::Size(640, 480), CV_8UC3, cv::Scalar(0,0,255)); cv::Mat white_img(cv::Size(640, 480), CV_8UC3, cv::Scalar::all(255)); cv::Mat black_img = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3); // 初期化後に塗りつぶす cv::Mat green_img = red_img.clone(); green_

  • 画像処理 — OpenCV-CookBook

    画像を単色で塗りつぶす¶ 画像を単色で塗りつぶす方法を示します. また,この例には示しませんが, 画像中の部分矩形を塗りつぶす場合には、ROIまたは cv::rectangle を利用します. 矩形を描く などを参考にしてください. #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> int main(int argc, char *argv[]) { // 初期化時に塗りつぶす cv::Mat red_img(cv::Size(640, 480), CV_8UC3, cv::Scalar(0,0,255)); cv::Mat white_img(cv::Size(640, 480), CV_8UC3, cv::Scalar::all(255)); cv::M

    画像処理 — OpenCV-CookBook
  • OpenCVで透過画像を任意の画像に張り付ける - Qiita

    OpenCVの公式ドキュメントに、透過画像を張り付けるチュートリアルが存在するが、縁取りとか回転とかの方法までは書かれていなかったので記事を作成した。 結果 チュートリアルそのまま 縁取り どうしても透過画像をそのまま張り付けると画像の縁がジャギジャギになってしまうので、以下の画像では透過情報を膨張・縮小して縁を調整している。 ランダム回転とランダム移動 以下の画像のように、ランダムに回転・移動ができると画像のバリエーションが簡単に増やせる。Deep Learningなどでデータを水増ししたい場合に利用することが多い。 解説 以下がメイン文。二枚の画像(前景hoge.pngと背景huga.png)を読み込み、縁取りや回転・移動のフラグを設定すると合成された画像が表示される。cv2.imread()の第二引数にはアルファチャンネルまで読み込むように-1を設定する。縁取りしたい場合は一つ目のF

    OpenCVで透過画像を任意の画像に張り付ける - Qiita