#author("2022-04-10T03:01:31+00:00","default:hotate","hotate") #author("2023-06-04T00:37:55+00:00;2022-04-10T03:01:31+00:00","default:hotate","hotate") #contents &tag(OpenCV, C++, Python); &tag(OpenCV,C++,Python); * リファレンス [#i9e0017c] - [[OpenCV.jp : OpenCV逆引きリファレンス — OpenCV-CookBook>http://opencv.jp/cookbook/index.html]] 基本的に OpenCV (と依存ライブラリ),および標準ライブラリ以外は使用しません. - [[OpenCV · atinfinity/lab Wiki>https://github.com/atinfinity/lab/wiki/OpenCV]] ([[GitHub]]) ** [[書籍]] [#t291cfb2] - [[OpenCVではじめよう ディープラーニングによる画像認識 - Amazon>https://amzn.to/36ZHlRH]] OpenCVの基礎的な解説からはじめ、dnnモジュールを用いたディープラーニングによる画像認識についても解説していきます。 -- [[【参考文献】OpenCVではじめよう ディープラーニングによる画像認識 | イメージングソリューション>https://imagingsolution.net/books/opencv%e3%81%a7%e3%81%af%e3%81%98%e3%82%81%e3%82%88%e3%81%86-%e3%83%87%e3%82%a3%e3%83%bc%e3%83%97%e3%83%a9%e3%83%bc%e3%83%8b%e3%83%b3%e3%82%b0/]] ** [[Python]] [#k04ee627] - [[OpenCVに関する情報 | note.nkmk.me>https://note.nkmk.me/opencv/]] ** VideoWriter [#a6edcd3f] - [[OpenCVのVideoWriterを使って画像から動画を作る。 - 可変ブログ>http://shibafu3.hatenablog.com/entry/2016/11/13/151118]] 連続した画像(パラパラ漫画のうような画像)から一つの動画を作ったのでメモを残しときます。 - [[OpenCV Video Writer on Mac OS X>https://gist.github.com/takuma7/44f9ecb028ff00e2132e]] Conclusion Use 'mp4v' or 'avc1' ** FPS [#o3cdfd9b] - [[【OpenCV】可変FPSのWebカメラで、一定のFPSで録画したいとき。VBR→CBR【力技】 - OpenCV>https://madeinpc.blog.fc2.com/blog-entry-1364.html]] 対処療法ですが、ループ内の処理時間を常時計測して、そのときどきで早送りの原因となる空洞ができないように(空洞が埋まるように)、解説などのサンプルではループ内で一回の処理で終わっているwriter << frameを必要回数実行するようなプログラムを書きます。 - [[Python, OpenCVで動画再生時のFPS(フレームレート)を測定・表示 | note.nkmk.me>https://note.nkmk.me/python-opencv-fps-measure/]] waitKey(1)としておけば可能な限り最小の待ち時間(最大のFPS)で表示されるため、カメラの映像をリアルタイムで表示する場合は基本的にはwaitKey(1)としておけば問題ないはず。 - [[Python/OpenCVで動画速度(FPS)を変えて再保存!>https://watlab-blog.com/2019/09/28/movie-speed/]] fpsを元の動画から取得した後にfps_newと新しいフレームレートを指定して動画を保存している所が違いになります。 -- コメント:結局のところ、"cv::CAP_PROP_FPS"で取得したFPSで一旦動画を出力し、実測値に基づいて変換すると精度が出るらしい(未検証)。実測値がどの程度"cv::CAP_PROP_FPS"に近づくかは、CPUやカメラの性能に依存する。(2020/03/01) - [[OpenCVで動画のFPSを計測する方法 | yamagablog>https://ymgsapo.com/2019/04/06/opencv-fps/]] (2019/4/6) 設定値が30FPSなのに対して、計測値は27FPSと少し下回っています。 ** ウインドウ [#b008cce8] - [[cv::Opencvのimshow(...)の直後にcv::waitKey(0) - プログラマ専用SNS ミクプラ>https://dixq.net/forum/viewtopic.php?t=19027]] cv::waitKey は、ユーザーからのキー入力を取得する関数ですが、実際にはメッセージループの役割を持っています。 したがって画像を表示するためには、少なくとも一回は WM_PAINT を処理する必要があり、これが、cv::waitKey を呼び出さないと画像が表示されない理由でもあります。 ** Mat [#a0739743] - [[cv::Matの基本処理 — OpenCV-CookBook>http://opencv.jp/cookbook/opencv_mat.html]] OpenCV 1.x では,画像を管理する構造体として IplImage が,その他の行列を管理する構造体として CvMat が用いられました. しかし,OpenCV 2.x の C++ インタフェースでは, cv::Mat クラスを利用して,これらを統一的に扱います. - [[基本構造体 — opencv v2.1 documentation>http://opencv.jp/opencv-2.1/cpp/basic_structures.html#mat]] OpenCV の C++ 行列クラス - [[OpenCVのMatのタイプ一覧表 | 404 Motivation Not Found>https://tech-blog.s-yoshiki.com/2018/11/787/]] OpenCVを触っているとよく出てくるCV_8UC3とかCV_8UC1。どんなものがあるか一覧にしました。 - [[1 cv::Matの基本処理 — OpenCV2 プログラミングブック リファレンス編>https://book.mynavi.jp/support/pc/opencv2/c3/opencv_mat.html]] ([[OpenCV2]]) - [[opencv - cv :: Mat :: ptrを使った効率的なピクセルアクセス<T>ポインタ | opencv Tutorial>https://riptutorial.com/ja/opencv/example/9922/cv----mat----ptr%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E5%8A%B9%E7%8E%87%E7%9A%84%E3%81%AA%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9-t-%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF]] 効率が重要な場合、 cv::Matオブジェクトのピクセルを素早く処理するには、 ptr<T>(int r)メソッドを使用して、行rの先頭(0から始まるインデックス)へのポインタを取得します。 - [[OpenCVの画像クラス/構造体 - AkiWiki>http://tessy.org/wiki/index.php?OpenCV%A4%CE%B2%E8%C1%FC%A5%AF%A5%E9%A5%B9%A1%BF%B9%BD%C2%A4%C2%CE]] OpenCVで画像を作るにあたって,サンプルコードでは様々なクラス/構造体を使っている.その歴史も合わせてちょこちょこ書いてく - [[[OpenCV][Mat]画素へのアクセススピード比較 - Qiita>https://qiita.com/hmichu/items/0a399d9e3bbf3a2a4454]] 圧倒的にポインタを用いる方法が速いです。しかし,驚きなのはMatに関するメソッドなどはそれほど速度が変わらないところです。 * [[macOS]] [#jca22e28] ** [[Homebrew]] [#x5bcbf44] - [[[Homebrew] バージョンを指定してフォーミュラをインストールする方法 (2): 黄昏てなんかいられない>http://kronus9.sblo.jp/article/71268425.html]] * 機能 [#y1edce2c] ** 顔検出 [#dd3b81a4] - [[macでOpenCVで顔検出 - Qiita>http://qiita.com/hit14/items/4fc405ddce40d0adae09]] OpenCVがHomebrewなどでインストールされている前提 ** 静止画 [#scb7bec2] - [[OpenCVを使ってドット絵をテイストそのままに拡大してみた - Qiita>http://qiita.com/shzero5/items/f283997641f6682c7197]] - [[画像の読み込み - AkiWiki>http://tessy.org/wiki/index.php?%B2%E8%C1%FC%A4%CE%C6%C9%A4%DF%B9%FE%A4%DF]] Mat cv::imread(String &filename, int flags); † OpenCV 2.0 から実装されたC++インタフェース OpenCV 3.0 より、 highguiモジュールからimgcodecモジュールに移動した ** TickMeter [#xa1fa531] - [[OpenCV 3.0でTickMeterを使う · atinfinity/lab Wiki>https://github.com/atinfinity/lab/wiki/OpenCV-3.0%E3%81%A7TickMeter%E3%82%92%E4%BD%BF%E3%81%86]] -- コメント:[[OpenCV4]]でも問題なく動作した。ただし、インクルードは下記の通り。(2020/03/01) #include <opencv2/core/utility.hpp> ** [[C++]] [#tb2163c7] - [[OpenCV(C++)の画像処理メモ - Qiita>https://qiita.com/yoyoyo_/items/aada199371f6802bb887]] ただしC++のOpenCV ** [[デバッグ]]機能 [#b94f426d] - [[初めてのOpenCV開発 ― デバッグ機能およびデバッグ支援プラグイン【OpenCV 2.4.9】 - Build Insider>http://www.buildinsider.net/small/opencv/06]] ** UI [#h6613244] - [[C++版OpenCVでcreateTrackbar第6引数userdataを使ってコールバック関数に参照させてみた - Qiita>https://qiita.com/satsukiya/items/5a4b93b56cb137c9a325]] userdata – コールバック関数に渡されることになるユーザデータ.グローバル変数に頼らずにトラックバーイベントを扱うために利用されます - [[C++版OpenCVでトラックバーを表示してみた - Qiita>https://qiita.com/satsukiya/items/8469d7f575b09fae64be]] 今回説明するトラックバーはパラメータを可変に動かすことで出力画像を表示することができる ** ノイズ [#h697a7f7] - [[OpenCV 備忘録: OpenCVによる画像の膨張と縮小>https://iwaki2009.blogspot.com/2013/01/opencv_29.html]] よく使用するのは、画像のノイズやひげを除去する cv::erode(from, to, cv::Mat(), cv::Point(-1,-1), 1); 画像の欠損部を補完する cv::dilate(from, to, cv::Mat(), cv::Point(-1,-1), 1); * 関連 [#jbff5913] #taglist(tag=OpenCV)