タグ

c++に関するYudoufuのブックマーク (29)

  • OpenCV3でAKAZE特徴量を検出する - AICam

    SIFTやSURFよりもライセンス的に使いやすく、トラッキング精度も高いAKAZE(Accelerated KAZE)特徴量をOpenCV3で検出するサンプルです。 映像中にどんな物体が映っているかを特定することで、人物の認識や移動経路の追跡など様々な分析が可能となります。こうした画像認識の基礎技術には、画像中の特徴的な部分(特徴量)を計算する処理があり、OpenCVを利用することで特徴量の抽出を簡単に実装できます。 特徴量を計算する処理にも様々なアルゴリズムがあります。OpenCV2ではSIFT,SURF,ORBなどの手法を利用できますが、OpenCV3では新たにKAZEとAKAZEというアルゴリズムも利用可能になりました。ここでは、KAZEおよびAKAZEの簡単な説明と、実際にOpenCV3でAKAZEを使って特徴量を計算するプログラムについて解説します。 KAZEとAKAZE KAZ

  • OpenCVでのORBによる特徴点抽出とマッチング(その1)基本的な使い方 – 株式会社インデペンデンスシステムズ横浜

    株式会社インデペンデンスシステムズ横浜 システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。 OpenCVでのORBアルゴリズムによる特徴点抽出とマッチングの処理についてです。特徴点抽出とマッチングの処理はOpenCVでは重要なテーマの一つだと思います。特徴点とは画像上での特徴となる点、代表的にはコーナーとなるでしょうか。この特徴点抽出、マッチングの課題としては、拡大縮小や回転された形状でも同じ特徴点が抽出出来るということがあります。これにより、動画上の物体追跡や物体認識に応用出来ます。(※これらの画像処理の理論的な内容についてはページ最後の関連リンク等を参照して下さい。) ここではOpenCVでのORBアルゴリズムを使ってみます。ORBアルゴリズム以外にもいろいろなアルゴリズムが使えますが、特許

    OpenCVでのORBによる特徴点抽出とマッチング(その1)基本的な使い方 – 株式会社インデペンデンスシステムズ横浜
  • [OpenCV] いまさら局所特徴量で物体検出!? - Qiita

    1.はじめに OpenCVには,様々な処理が用意されています。画像処理,映像解析,カメラキャリブレーション,特徴点抽出,物体検出,機械学習,コンピュテーショナルフォトグラフィ,3D可視化などが基モジュールで用意されています。さらに,エクストラモジュールを追加することで,より豊富うな処理が利用できます。[1] OpenCV 3.x系を中心に話をします。 今回は,OpenCVの局所特徴量がどの程度簡単に使えるのか興味があり,局所特徴量を利用した物体検出を作成しました。 最近世間では,ディープな物体認識で盛り上がっていますが。 特徴点抽出に関する詳しい説明は,検索すれば多数ありますので,ここでは割愛します。 藤吉先生 (中部大学)のスライド「画像局所特徴量SIFTとそれ以降のアプローチ」は,とてもわかり易く説明されています。 2.特徴点検出と特徴量記述 特徴点検出と特徴量記述は,feature

    [OpenCV] いまさら局所特徴量で物体検出!? - Qiita
  • 凸包とOpenCV - Kazzz's diary

    昨日までの件に関して、もう一度困っている事とやりたい事とを整理しておこう。 困っている事 findContourとapproxPolyDPで抽出した輪郭の頂点座標の出現順が一定しない。 座標原点の右上から出現したり、左下から出現したりするため、他の座標系(例:UIView)に変換することができない やりたい事 findContourとapproxPolyDPで抽出した輪郭の頂点座標の列挙に一貫性を持たせ、他の座標系への変換を容易にする。 昨日までの私の足りない考えでの単純な方法では失敗したが、昨日コメントでアドバイス頂いたように、色々調べてみるとこのアルゴリズムは計算幾何学で言う所の"凸包"を算出する事に等しいのではないかということが判った。 凸包とは? 「点の集合があったとき、その点を全て含んで且つ凹んでいる部分が無い(凸)多角形を形成する点の集合。」 とでも言えば良いだろうか。詳しくは

    凸包とOpenCV - Kazzz's diary
  • OpenCVで輪郭抽出から隣接領域の切り出し(その3)凸包の取得 – 株式会社インデペンデンスシステムズ横浜

    株式会社インデペンデンスシステムズ横浜 システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。 OpenCVで画像内の輪郭抽出からその輪郭の隣接領域(四角形)を求めてその領域を切り出すという処理を作ってみました。前回までのプログラムとほぼ同じですが、前回までは輪郭抽出 → 直線近似 → 隣接領域 の流れでしたが、今回は、輪郭抽出 → 凸包の取得 → 隣接領域を試しました。以下の画像がその結果の例です。(※実画像サイズは大きめです。) 前回までの結果とほぼ同じですが結果の画像の緑の線が輪郭で、青い線が一定以上の面積の輪郭から取り出した凸包です。 「凸包」とはある図形を含む最小の凸図形のことです。以下の図形で青い線です。ここでは輪郭の凸包ですが点集合に対する凸包も定義出来ます。どうやら「輪ゴムで囲うよう

    OpenCVで輪郭抽出から隣接領域の切り出し(その3)凸包の取得 – 株式会社インデペンデンスシステムズ横浜
  • コネタス株式会社 | 大阪府のLAN工事・電気通信工事

    コネタス株式会社は、通信・電気工事の工事はもちろんのこと、ネットワーク機器、複合機や電話主装置の販売も行っております。 工事の際は、必ず必要になるかと思いますので、合わせてご相談して頂けましたら幸いです。 自社で工事を行いたい方や、工事業者様には、電気材料などの販売も行っております。 末永くお付き合いできますよう、ぜひとも宜しくお願い致します。 会社案内へ MISSION 通信工事においては、LANケーブル・光ケーブルでネットワークの構築、 各種ケーブル配線に伴う屋外などの配管工事や、建屋間の架空配線も合わせてさせて頂いております。 また、監視カメラの提案・設置・運用、ビジネスフォン・IP電話の構築も行っております。 分電盤内のブレーカーから、事務所までのコンセントの増設、 照明器具などのLED機器へ取替工事による経費削減のご提案等、電気工事もお任せください。 事業案内へ

  • OpenCVで輪郭抽出から隣接領域の切り出し(その1)輪郭抽出まで – 株式会社インデペンデンスシステムズ横浜

    株式会社インデペンデンスシステムズ横浜 システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。 OpenCVで画像内の輪郭抽出からその輪郭の隣接領域(四角形)を求めてその領域を切り出すという処理を作ってみました。以下の画像がその結果の例です。(※実画像サイズは大きめです。) ここでの処理結果画像内の緑色の線が輪郭で、一定以上の面積の輪郭を直線近似した線が青色の線です。一応面積も表示しています。以下が切り出した領域の画像の一部です。 ここではペットボトルのキャップの下が透明になっているのでペットボトル全体の輪郭ではなくキャップ部分と胴体部分を認識したようです。既に飲んだ後で空だったと思います。中身が入った状態で光の反射等があれば別の輪郭を認識したかもしれないです。漢字はそれぞれこのような結果になりまし

    OpenCVで輪郭抽出から隣接領域の切り出し(その1)輪郭抽出まで – 株式会社インデペンデンスシステムズ横浜
  • Windows PhoneでOpenCVを使って透視投影変換する - 酢ろぐ!

    cvGetPerspectiveTransform関数とcvWarpPerspective関数を使って、透視投影変換させてみました。 OpenCVを使って透視投影変換する OpenCV for Windows Phoneのテストのために透視投影変換を実装してみましたが、Windows Phoneに依存する部分がない(とても少ない)ため、その他のプラットフォームでも利用することができると思います。 static void warpPerspective(IplImage* srcImage, IplImage* dstImage) { CvMat* map_matrix; CvPoint2D32f src_pnt[4], dst_pnt[4]; src_pnt[0] = cvPoint2D32f(0.0, 0.0); src_pnt[1] = cvPoint2D32f(0.0, 1024.0

    Windows PhoneでOpenCVを使って透視投影変換する - 酢ろぐ!
  • OpenCVSharpで台形補正 | 1977

    QRコードが印字された紙を写真に撮り、その写真からQRコードを読み込みたい。 斜めから撮影しているとQRコードのエリアがきれいな四角ではなくゆがんでいるため、これをOpenCVで補正したい。 ZXingを使っていたら、どうしても正面からの画像でないと認識してくれないっぽいので、今回の方法に至った。 考えた方法は、QRコードに必ず含まれる3つの四角をみつけて、その四角のゆがみ具合から台形補正する方法。 1.写真を二値化する(白黒をはっきりさせる) 2.輪郭を検出する 3.検出した輪郭1つ1つに対して以下の処理をする 4.直線近似する(ほぼ直線でもいっぱいプロットされるからざっくり直線にしてしまう) 5.直線近似した結果、4点である輪郭以外は無視する(四角形しか興味ないから ※直線近似して4点の輪郭にした理由は、QRコードの隅っこにある四角形のゆがみで写真全体を補正するので単純な四角

    OpenCVSharpで台形補正 | 1977
  • 透視変換を行う - 大山昇太の今日このごろ

    透視変換とは 変換前後の4点を指定し 画像を変換することです。画像の回転が3点を指定して変換するのに対し4点になるわけです。 OpenCvでは次の手順で行います。 1)変換前後の座標をもとにgetPerspectiveTransformで変換行列を求める。  public static Mat getPerspectiveTransform(Mat src, Mat dst)  src : 変換前の4点を示す マトリックス CvType.CV_32F  dst : 変換後の4点を示す マトリックス CvType.CV_32F src_mat およびdst_matのCv_TypeはCV_32F以外はエラーになります。 2)変換行列用いて warpPerspective で画像を変換する。  static void warpPerspective(Mat src, Mat dst, Mat M

  • C++ OpenCV 詳しい方お力をお貸しください - プログラマ専用SNS ミクプラ

    初めまして、私はここではビギナーと名乗らせていただきます。 私自身C言語についてまだまだ勉強不足なところもありますが、どのような処理をすればよいのか思いつかない点も多くあります。 そのためC言語について理解がまだまだのためこの名前にしました。 数日前に一度同じ内容で投稿したのですが、コードを囲むなどのミスで、分かりにくい内容になっていました。 なので今一度同じ内容を投稿させていただきます。 私はタイトルのように紙の座標 主に紙の四隅の座標を出したいと思っています そのため下記のような輪郭を取り、座標を取るプログラムを実行しました コード: #include <C:\OpenCV2.4.9\sources\include\opencv\cv.h> #include <C:\OpenCV2.4.9\sources\include\opencv\highgui.h> int main (int

  • カメラから机に置かれた紙の座標取得プログラムなんですが・・ - プログラマ専用SNS ミクプラ

    フォーラム(掲示板)ルール フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code] と [/code] で囲って下さい。詳しくはこちら はじめましての方ははじめまして・・よろしくお願いします。 私はタイトルのように紙の座標 主に紙の四隅の座標を出したいと思っています そのため下記のような輪郭を取り、座標を取るプログラムを実行しました #include <C:\OpenCV2.4.9\sources\include\opencv\cv.h> #include <C:\OpenCV2.4.9\sources\include\opencv\highgui.h> int main (int argc, char *argv[]) { int i; IplImage *src_img = 0, **dst_img; IplImage *src_img_gray = 0; Ip

  • C++でOpenCv - catalinaの備忘録

    Opencvで輪郭抽出、実験としてJavaでやっていたけど、今回はC++でやってみることにした。やっぱり慣れてる言語っていいね。 2014/06/04追記:コード部分の体裁を修正 char* filename = argc == 2 ? argv[1] : (char*)"ajani.jpg"; if( (src = imread(filename,1)).data == 0 ) return -1; Mat lmDst;            // 最終出力画像の格納用 Mat lGray; Mat    lOutput; cvtColor(src, lGray, CV_RGB2GRAY); // ガウシアンフィルタを作成する // arg1 画像の型 // arg2 アパーチャサイズ // arg3 ガウシアンΣ(sigmaX) // arg4 ガウシアンΣ(sigmaY) // ar

    C++でOpenCv - catalinaの備忘録
  • opencvでカードの傾きを検出する - catalinaの備忘録

    前回のエントリまでで、カードの輪郭抽出までできたので、今回はその輪郭をもとにカードの傾きを求めることにする。 カードの傾きを求めることができれば、そのカードの上にARでモデルを表示するとき、カードの姿勢に追従することができる。 カードの傾きとは「2つのカードのそれぞれの4隅の頂点座標同士を対応付けたとき、の頂点座標の変換行列」といえる。 3Dポリゴンでいうところの透視変換行列ってやつですね。 OpenCvにそれっぽい関数があったので使うことにする。 カードの輪郭をもとに透視変換行列を求めるまでの手順は次のとおり カードの輪郭を求める(findContours関数の引数でCV_RETR_EXTERNALを使えば一番外側の輪郭だけ取れる) カードの輪郭を直線に近似する(approxPolyD) カードの頂点同士の変換行列を求める(findHomography) この手順で得られた変換行列を、乗

    opencvでカードの傾きを検出する - catalinaの備忘録
  • NtKinect: Kinect V2 C++ Programming with OpenCV on Windows10

    iOSプログラミング with Swift 2 2016.06.20: created by SwiftOpenCVを利用して顔認識する(AVFoundationの例) 「SwiftでCamera を使う(AVFoundation 経由)」 と 「SwiftOpenCVを利用して顔認識する(もっとも単純な例)」 を組み合わせて、リアルタイムで顔認識をする Swift のプログラムを作成してみましょう。 OpenCV のiOS用バイナリ を用意します。今回は http://opencv.org/ で公開されている OpenCV for iOS から opencv2.framework.zip をダウンロードします。 学内からはこちらからが速くダウンロードできます。 展開して opencv2.framework フォルダを生成します。 Xcode を起動して "Create a new X

  • 【Swift】文字認識ライブラリ、TesseractOCR for iOSを試してみた - Qiita

    TesseractOCR for iOSとは 画像から文字を認識してくれるライブラリです。 こんな感じ CocoaPodから利用できるのも美味しいです。 TesseractOCR for iOS https://cocoapods.org/?q=tess サンプルをgithubにあげましたので、参考にしてみてください。 https://github.com/ktanaka117/TesseractTestWithSwift 導入手順 1.プロジェクトファイルを作ってPodのインストール Podfileの中身はこんな感じです。 platform :ios, '7.0' pod 'TesseractOCRiOS', '~> 4.0.0' 2.言語データファイルをプロジェクトにimportする ここのリストから使用したい言語データファイルをダウンロードします。 https://code.goog

    【Swift】文字認識ライブラリ、TesseractOCR for iOSを試してみた - Qiita
  • C言語 に慣れた人が書く C++ のソース - Natural Software

    C++ のソースを見てると。この人普段 C言語がメインだな?と思うソースにお目にかかることが多い。 その人の傾向も並べてみる。 アスタリスクとかアンパサンドの位置が変数寄り C 言語がメインの人はポインタとか参照をこう書く char &r; char *p = &r; C++ の人はこう書く char& r; char* p = &r; 全体的に const がない 引数の型につける方の const がない 当然 const メンバ関数などない 定数は #defione 3文字が好き 変数は3文字。元が4文字でも3文字の変数 tmp とか cnt とか 変数を関数の先頭で宣言する 使うところで宣言しない。 void main() { int i; string str1, str2; for ( i = 0; i < 10; ++i ) { ごにょごにょ } ごにょごにょ str1 = "

    C言語 に慣れた人が書く C++ のソース - Natural Software
  • C/C++のポインタと参照、右寄せか左寄せか - minus9d's diary

    CやC++でポインタ変数を宣言するとき、次の2通りの書き方はどちらもコンパイルが通る。 int *p1; // 右寄せ int* p2; // 左寄せ 自分は右寄せで書くことが多い。理由は特にない。最初にCを勉強するときに使った教科書が右寄せのスタイルをとっていたから、というだけである。 しかし最近他の人のコードで右寄せのものを目にする機会が何度か立て続けにあった。はたしてどちらが多数派なのか、簡単に調べてみることにした。 まずは手持ちのをチェック。同じでもページによって両方のスタイルを使っているものもある。なので以下の調査には漏れがあることをご容赦願いたい。 Bjarne Stroustrup 「C++の設計と進化」 C++開発者のBjarne Stroustrupは左寄せ。p271から引用。 void* operator new(size_t, void* p) { return

    C/C++のポインタと参照、右寄せか左寄せか - minus9d's diary
  • ポインタ宣言の*記号、左寄せ派? 右寄せ派?

    C/C++でポインタ変数を宣言するときの*記号をint* a;のように左寄せで書くか、int *a;のように右寄せで書くか。 右寄せで書く場合、「Cでは宣言と使用の文法を一致させる」という規則から考えれば素直に解釈できるという話。

    ポインタ宣言の*記号、左寄せ派? 右寄せ派?
  • 意外と知られていない構造化プログラミング、あるいは構造化プログラミングはデータも手続きと一緒に抽象化する、あるいはストロヴストルップのオブジェクト指向プログラミング史観

    意外と知られていない構造化プログラミング、あるいは構造化プログラミングはデータも手続きと一緒に抽象化する、あるいはストロヴストルップのオブジェクト指向プログラミング史観 書いた人: ると 型プログラミング言語史観(1) 〜あるいはオブジェクト指向における設計指針のひとつ〜という記事がありました。手続き型からの発展としてのオブジェクト指向という史観を書いた記事です。しかし、そこで次のように述べられている史観は少々単純化しすぎです。 手続き型プログラミングでは手続きを抽象化することで保守性を挙げることに成功したが、データを守ることには失敗してしまった。そこでオブジェクト指向はデータと手続きをひとかたまりにすることでデータを外から守るというコンセプトを打ち出した。 手続き型プログラミングの時代は、少なくとも思想的にはそこまで暗黒的ではありませんでしたし、「データと手続きをひとかたまりにする」の