} 色空間の変更(RGB→HSV) float VectorLengthSquare(Vector in); 下記のソースコードで void ScrollToLeft(float jikiposx); Vector CreateVector(Vector in, float veclen); key = cvWaitKey( 1 ); で使えば問題なく使えるのですが、デフォルトのウィザードを使った時の使い方を知っておきたいのです。 新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す) void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag, 初心者なのでわかりやすくお願いします, Microsoft Visual Studio 2008 bool HitTestLineAndBall(Line2D linein, Ball2D ballin); >また,この関数は,アルファ透過をサポートしません.目的画像が4チャンネルである場合でも color[3] には,単に新たなピクセル値がコピーされるだけです.したがって,もし半透明な形状を描画したい場合は,それを別のバッファに描画してから画像とブレンドするとよいでしょう. const float PIE = 3.1415926f; ---------------------------------------------------------------- //当たり判定関数 OpenPoseはCVPR2017で発表された(その前にArXivにはありましたが)、深層学習を用いて姿勢推定を行うアルゴリズムで、最近注目がかなり高まっている姿勢推定手法です。論文は「Realtime … dst_img = cvCreateImage(cvGetSize(bg_img),IPL_DEPTH_8U,4); } 参考まで。 入力画像(640*480)に対して, if(LoadDivGraph("media\\player01.bmp", Q openCVを用いた手形認識. 回答ありがとうございます! int LoadFiles();  調べていませんがソースコードの公開はまだ無かったのでは無いかな? ToFカメラによる3D手話認識 Sign Language ... - 東京工業大学 int GetPassedTime(int idx); #include "myhelper.h" お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。, MACでJPEGのサムネイルの抽出方法はありますか? 画像データが欠損しているので普通に書き出しても, 画像 手がコンプレックスの高1女子です。 見てわかる通り、全然白くもないし指は細いわけじゃないし, http://www.hfl.hiroshima-u.ac.jp/hyper_human_man …, 動的配列のメリット・デメリット C言語で静的配列を用いた場合と、malloc関数で動的配列を用いた場. }, OpenCVとVisual Studio 2005を使ってカメラ画像を出力し、キーを押すことで画像をファイルに保存しています。しかし、キーを押すたびに画像が上書きされてしまい、結局保存ファイルは一つだけになってしまい連続して画像ファイルが取得できません。下記のプログラムで下のほうに書いてあるcvSaveImage()関数にうまくカウンタを使ってやればいいと思うのですが、私の技量ではできませんでした。知っている方がいたら教えてください。よろしくお願いします。 // ROI を通してグレイスケール画像に書き込む Version 3.5 SP1 に肌色を検出する方法として NAが魚眼レンズ画像となるので、それにA^-1をかけると void DrawBall2D(Ball2D in, int Color, int Fill); うれしいんですが・・・ { #include 下の画像だと赤い円を抽出したいのに、線も含めた輪郭が抽出されます。 = N1 #include }, オフセットは必ず必要です。ROIを指定する前の画像の全体のサイズと、本来の画像の左上から、ROIの左上の座標のオフセットは、locateROI メソッドで取得することができます。 cv::Rect* roi = new cv::Rect(roi_x, roi_y, roi_w, roi_h); サンプルプログラムは「アフィン変換」や、「射影変換」などで検索すれば出てくると思います (3)矩形内の映像を切り取り標準化       break;  プログラミング関係の質問はこちらの方が回答を集めやすいと思います。 #include "stdafx.h"       cvSaveImage(str, frameImage ); #include bool HitTestLineAndLine(Line2D line1, Line2D line2); Point2D PosInView(Point2D in); (roi_x, roi_y, roi_w, roi_y)が (1)動画像中の肌色の部分だけウインドウ1に抽出・表示 Version 3.5 SP1 新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す) printf( "カメラが見つかりません\n" ); Microsoft .NET Framework ----------------------------------------------------------------   int counter = 0; > 現在の実装では,アルファチャンネルがもしあったとしても,出力画像からは取...続きを読む, OpenCVを使用してある物体だけの輪郭を抽出したいです。 // okwave01.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 基本動作単語HMMに基づく手話認識 rgb_img.rows * 0.25, rgb_img.cols * 0.25, 出来れば、手話認識・指文字認識・ジェスチャ認識などのソースプログラムなどがあれば参考にさせて頂きたいので載せてくれるならば助かります。 for ( int y = 0 ; y < dst_img->height ; y++ ) bool IsPointAtLineFace(Line2D linein, Point2D ptin); cvCvtColor(bg_img,dst_img,CV_RGB2RGBA); Visual C++ 2008 Express Edition ---------------------------------------------------------------- 御経験のある方、御教示お願い致します。, #1の補足への補足。 処理プログラムをおしえていただけませんか? 透明度を表すRGBAのA(アルファチャネル)をいじって画像の透明にしたいのですが、いじってみてもなにも変化がありません。 *; import processing.video. 言語は、C以上の高級言語ならたいていわかるので //球体を記録する構造体 }else if( key == 'c'){ cvShowImage( windowNameCapture, frameImage ); // okwave01.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 Microsoft .NET Framework Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel); を使いたいのですが、引数の型が_TCHAR*になっているため文字がそのまま使えません。 void ScrollToUp(float jikiposy); --------------------------------------------------------------- > この関数では,8ビットシングルチャンネル,あるいは3チャンネル(チャンネルは ‘BGR’ の順番)画像のみを保存することができます Version 9.0.21022.8 RTM { ---...続きを読む, オフセットは必ず必要です。ROIを指定する前の画像の全体のサイズと、本来の画像の左上から、ROIの左上の座標のオフセットは、locateROI メソッドで取得することができます。 下記のソースコードで  エラー内容 よろしければ、アドバイスをください。 参考まで。 1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました というのが出ています。 cvDestroyWindow( windowNameCapture ); 動作環境 return 1; if ( ( capture = cvCreateCameraCapture( -1 ) ) == NULL ) { cv::imshow("GRAY IMAGE", gray_img); >あれば参考にさせて頂きたいので載せてくれるならば助かります。 #include "mymain.h" const cv::Point ROI_TL(rgb_img.rows * 0.25, rgb_img.cols * 0.25); #include //RGBA変換 } std::vector corners; //定数宣言 FastFeatureDetectorやGoodFeaturesToTrackDetector等の特徴点検出器を入力画像の特定の部分に対して行うために,入力画像に対してROIを設定したのですが上手くいかない場合があって困っています. cv::cvtColor(rgb_img, gray_img, CV_BGR2GRAY); return cv::waitKey(); float hankei;//半径 break; >また,この関数は,アルファ透過をサポートしません.目的画像が4チャンネルである場合でも color[3] には,単に新たなピクセル値がコピーされるだけです.したがって,もし半透明な形状を描画したい場合は,それを別のバッファに描画してから画像とブレンドするとよいでしょう. 左上(0,0)右下(640,480)や左上(0,0)右下(320,240)を矩形領域を指定すれば上手くいくのですが, Vector RotateVector(Vector in, float radian); yoloを用いた物体検出; おわりに ; はじめに. }; アルファチャンネルに対応した別のライブラリを使うなどの工夫が必要です。, http://opencv.jp/opencv-2.1/c/drawing_functions.html >cv::SaveImage { のように_T()で囲ってしまえばいいですよ。, 魚眼レンズで撮影した画像って、ひずんでますよね。 や int main( int argc, char** argv ){ extern float g_frametime; void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness); //カメラが見つからなかった場合 void ScrollToDown(float jikiposy); }; cv::imshow("RGB IMAGE", rgb_img); 前回まではopencvに同梱されているカスケード型の検出器を用いて、静止画および動画を使って顔検出を行いました。 今回は、yoloと呼ばれる物体検出法を用いた物体検出を行ってみたいと思います。 yoloとは float width; たとえば, void ScrollToRight(float jikiposx); #include "myhelper.h" //カメラからの入力画像1フレームをframeImageに格納する } #include "DxLib.h" Version 9.0.21022.8 RTM ---------------------------------------------------------------- cv::Mat* InuptImage = new cv::Mat(640, 480, CV_8UC1, data);//dataはbyte型 struct Ball2D{ //ライブラリ関数   // 以下二行追加 const cv::Rect RECT( 元画像をN、射影行列をA、その逆行列をA^-1とした時、 Windows 7  mymain.h (1)動画像中の肌色の部分だけウインドウ1に抽出・表示 //--------------------------------------------------------- //他から呼び出させるMyMainの関数 cv::circle(grayimage_roi, it->pt, 1, cv::Scalar(255), 2); CMU-Perceptual-Computing-Lab/openpose, Tensorflow導入に向けたcuDNN環境構築(Windows 10) | 技術的特異点, GIGABYTE ビデオカード NVIDIA GeForce GTX 1080搭載 オーバークロック ゲーミングモデル GV-N1080G1 GAMING-8GD, C++でData Augmentationをやってみる(Random CropとFlip編), tensorflowで「Could not find ‘cudnn64_6.dll’」エラー, C++でData Augmentationで画像を回転させて学習画像を増やしてみる(Rotation編), Visual Studio 2015でOpenCV 3.4環境構築(Windows10). 助言とても参考になりました。 問題があれば sprintf_s() などを使って下さい。, Microsoft Visual Studio 2008 int main(int argc, char *argv[]) 11,11,1,64,64,g_jikiimage) == -1) return -1; for (auto it = corners.begin(); it != corners.end(); ++it) { #include "stdafx.h" cv::Mat rgbimage_roi = rgb_img(RECT); int main(int argc...続きを読む, VC++2010での、通常の 今考えている方法としては、 }; 画像を貼り付けときます http://opencv.jp/opencv-2.1/c/reading_and_writing_images_and_video.html 今考えている方法としては、  手話認識はまだ研究途上なので、回答を待っていても期待できるような明快な回答は難しいと思います。 { 大体このようにプログラムを作成してますが、恥ずかしながら(2)のあたりで詰まってます。。。   /* 省略 */ お願いします。, 代数幾何の射影変換で多分出来ると思います void SetLine2DKatamuki(Line2D *in); Vector speed;//移動している場合は速度をセット } void SetSimpleTimer(int idx, int time); // オフセットを考慮して直接RGB画像に書き込む //sample.bmpは640*480のRGBの画像 // > cv::LoadImage //透明度をいじる   /* 省略 */ (4)あらかじめ用意していた指文字のモデル画像と、矩形内の映像をテンプレートマッチング }, http://opencv.jp/opencv-2.1/c/drawing_functions.html extern Rect2D g_framerect;//画面領域(当たり判定) int *imgarray, int allframe, float fps);       // 以下二行追加、修正 左上(10,10)右下(640,480)や左上(320,240)右下(640,480)だと,結果がズレてしまいます. const float ZEROVALUE = 1e-10f; どこに問題があるのでしょうか? InuptImage = new cv::Mat(*InuptImage, *roi); 1>my - エラー 2、警告 0 extern Rect2D g_stagesize;//ステージサイズ } Point2D rightbottom; 参考URL:http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpdx6sdk/_dx_the_projection_tr, OpenCv 透明度について // ここに処理を書く struct Rect2D{ OpenCVに関する質問です. (0, 0, 640, 480)や(0, 0, 320, 240)の場合は上手くいくのですが, //ウィンドウを破棄する cvSaveImage("picture.bmp", frameImage ); const int SCROLL_LIMIT = 200; fopen(argv[1], "r"); (3)矩形内の映像を切り取り標準化 void MyMain(void) { //--------------------------------------------------------- http://www.mmsp.nitech.ac.jp/plone/research/singlanguage/singlanguage 例えば以下のようにします。 (2)任意の位置の手の周囲に矩形で線を描画 //メインループ     if ( key == 'q' ) { //色々なファイルの読み込み //画像ハンドル のウィザードを使って、arvg[1]やargv[2]に引数を与えて、本体内で通常のCで使う NAA^-1 = N(AA^-1) float CrossProduct(Vector v1, Vector v2); (4)あらかじめ用意していた指文字のモデル画像と、矩形内の映像をテンプレートマッチング void DrawLine2D(Line2D in, int Color, int Thickness); http://oshiete.goo.ne.jp/category/250/ cvNamedWindow( windowNameCapture, CV_WINDOW_AUTOSIZE ); cv::circle(rgb_img, ROI_TL + cv::Point2i(it->pt), 1, cv::Scalar(0, 0xff, 0), 2); bool HitTestBallAndBall(Ball2D a, Ball2D b); // File Name : image.c  mymain.cpp FastFeatureDetectorやGoodFeaturesToTrackDetector等の特徴点検出器を入力画像の特定の部分に対して行うために,入力画像に対してROIを設定したのですが上手くいかない場合があって困っています. >出来れば、手話認識・指文字認識・ジェスチャ認識などのソースプログラムなどが CvCapture *capture;//カメラキャプチャ用の構造体 //タイマー関数 1)誤検出が多い場合は、分類器のネガティブサンプルセットを拡張して再度トレーニングすることができます。 拡張されたネガティブイメージセットには、そのようなイメージが含まれている必要があります。 おそらく、これはより良い分類子を作成するのに役立ちます。, 問題を説明する前に私の必要性を説明しましょう。 私は手で制御されるアプリケーションを楽しみにしています。 手のひらを使ったナビゲーションとグラブ/拳を使用したクリック。, 現在、私はOpenniと協力しています。これは有望であり、私の場合はサンプルで手持ちのトラッカーを持っていたので有用であることが判明した例はほとんどありません。 時間のための私の目的を果たしています。, 抽出されたRGBデータにAdaboost fistクラシファイアを訓練して使用しましたが、これはかなり良い結果でしたが、前進するには誤検出が多すぎます。, 3)いくつかの論文がHMMに言及しているように、私たち自身の手振りを指導することができますか?そうなら、OpenNIのような図書館をどのように進めるのですか?, ええ、OpenNIの中小企業図書館で、グラブ検出器のように試みましたが、私の目的を果たすことはありません。オープンソースでもなく、私のニーズにも合致しません。, 私が尋ねたことは別にして、あなたが考えるものがあれば、それは私が良い提案として受け入れられるのを助けることができます。, あなたが拳/グラブ状態の検出のみが必要な場合は、マイクロソフトにチャンスを与える必要があります。 Microsoft.Kinect.Toolkit.Interactionには、手のグリップ/グリップリリース状態を検出するメソッドとイベントが含まれています。 InteractionHandPointerのHandEventTypeを見てください。 これは、拳/グラブ検出には非常に有効ですが、個々の指の位置を検出したり報告したりすることはありません。, 次のキネクト(キネクト1)は手(手首、手、親指)ごとに3つの関節を検出し、オープン、クローズ(グリップ/拳)、ラッソ(ポインタ)の3種類のジェスチャーを持ちます。 これで十分なら、マイクロソフトのライブラリを検討する必要があります。, スクリーンショット: http : //lgg.epfl.ch/img/codedata/htrack_icp.png, YouTube動画: https : //youtu.be/rm3YnClSmIQ, ペーパーPDF: http : //infoscience.epfl.ch/record/206951/files/htrack.pdf, 物事が複雑になるので、最初のアルゴリズムを訓練する必要はありません。 信頼性が低いため、色を使用しないでください(バックグラウンドと混ざり、照明や視点によって予期せず変更されます), 指を3Dで再発見するのではなく追跡します。これにより安定性が向上します。 私は約3年前にそのような指の検出に成功しました。, 私はhttp://www.threegear.com/で提供されているように、ミドルウェアライブラリではかなりの成功を収めています 。 彼らはいくつかのジェスチャー(つかむ、つまむとポインティングを含む)と6自由度のハンドトラッキングを提供します。, 速い答えは:はい、深度データを使って自分のジェスチャー検出器を訓練することができます。 本当に簡単ですが、ジェスチャーの種類によって異なります。, ここでは、(Matlabで)素敵なチュートリアルとコードを見つけることができます。 コード( test.mはかなり簡単です)。 ここにはスニペットがあります:, 指を扱うことはほぼ同じですが、 指を検出する代わりに指を検出する必要があります。 Kinectには指先がないので、特定のコードを使用してそれらを検出する必要があります(セグメンテーションまたは輪郭追跡を使用)。 OpenCVを使用したいくつかの例がこことここにありますが、最も有望なものはフィンガーノードを持つROSライブラリです( ここの例を参照 )。, //lgg.epfl.ch/img/codedata/htrack_icp.png, //infoscience.epfl.ch/record/206951/files/htrack.pdf, あなたの手が最も近いオブジェクトであると仮定すると、深さの閾値で単純に分割することができます。 しきい値を手動で設定したり、深度ヒストグラムの最も近い領域を使用したり、深度マップ上で.