OpenCV

ZedBaord用 UbuntuにOpenCV2.4.6.1をインストール
ZedBoard用UbuntuにOpenCV2.4.6.1をインストールしたので書いてお く
ZYBOにOpenCV 2.4.6.1をインストール
XillinuxはUbuntuなので、OpenCVをインストール出来るのでは?ということ でインストールしてみた。
レナ像を使用して OpenCVで顔検出をやってみた
色々なマシンでOpenCVで顔検出サンプルをやってみた。
顔検出はOpenCVの samples/c の facedetect を起動してレナ像の顔検出を行ってみた。

Parallella-16 にOpenCV 2.4.6.1をインストール1(SDカードの容量不足)
Parallella-16ボードの Ubuntu に OpenCV 2.4.6.1をインストールしていたら、SDカードが容量不足でビルドができなかった。
Parallella-16 のSDカード・ドライブを8GBから16GBに拡張
Parallella-16のSDカード・ドライブを初期化して、8GBから16GBに拡張し た。
Parallella-16 にOpenCV 2.4.6.1をインストール2(その後)
OpenCV 2.4.6.1がうまく実行できないので、OpenCV 2.4.9 をインストールしたが、やはりうまく実行できない。

レナ像を使用して OpenCVで顔検出をやってみた(ZYBO Linaro Ubuntu)
”ZYBOのLinaro Ubuntu のXウインドウの表示をパソコンで行う(Xmingを使用)”で、OpenCVの画像出力をパソコンのウィンドウとして表示することが出来たので、例によってレナ像を使用 してOpenCVで顔検出をやってみた。

ZYBO用の Linaro Ubuntu 14.04 LTS で OpenCV の顔検出ができた
もう一度、Ubuntu 12.11 を戻して、もう一度、、Ubuntu 14.04 LTS にアップグレードしてみることにした。
Ubuntu 14.04 LTSでOpenCVの顔検出が動作した。

facedetect でいろいろな定義ファイルを試してみた1
OpenCV の facedetect アプリケーションは、顔を検出することが出来る。
顔を判定するためには顔の定義ファイルが必要で、--cascade の後に定義ファイル名を指定する。現在は、/usr/local/share/OpenCV/haarcascades ディレクトリの haarcascade_frontalface_alt.xml ファイルを使用している。
定義ファイルは、/usr/local/share/OpenCV/haarcascades ディレクトリに下に示すようにたくさんあるので、これを確かめてみた。
facedetect でいろいろな定義ファイルを試してみた2
facedetect でいろいろな定義ファイルを試してみた3

ZYBO用カメラ画像を OpenCVで顔認証した
”ZYBOのUbuntu上でカメラ画像をBMPファイルに変換できた”でカメラ画像をBMP ファイルに変換できたので、そのBMPファイルを gimp でJPEGファイルに変換して、OpenCV で顔認証を試みた。成功した。
ZYBOの Ubuntu14.04LTSにOpenCV-2.4.10をインストール
Ubuntu14.04LTSには、 OpenCV-2.4.6.1 はインストールできなかった。そこで、 OpenCV-2.4.10をインストールした。
OpenCV のコンパイル・スクリプト
OpenCV の C , C++ のプログラムをコンパイルするためのコンパイル・スクリプトを作った。

OpenCVのエッジ画像フィルタのサンプルプログラムを試してみた

エッジ検出(Sobel,Laplacian,Canny) フィルタを試した。
OpenCVのいろいろなサ ンプルプログラムを試してみた
コーナー検出(EigenValue,Harris,FAST)、画像の二値化、画像のカラー ヒストグラムの描画、k-meansクラスタリングによる画像分割,減色、モルフォロジー変換を試した。
OpenCVのいろいろなサ ンプルプログラムを試してみた2
ハフ変換による直線検出 cvHoughLines2、ハフ変換による円検出 cvHoughCircles、輪郭の検出と描画 cvFindContours、画像のアフィン変換(1) cvGetAffineTransform + cvWarpAffine、平滑化 cvSmoothを試した。
Interface誌 2013年7月号のOpenCVのサンプルプログラム1
Interface誌2013年7月号のOpenCVのサンプルプログラムはとってもよく出来 ていると思うので、やってみたいと思う。
「基本処理その3…ヒストグラムによる輝度調整」の demhist.cpp を g++_opencv でコンパイルして、実行してみた。
カメラで撮影した画像を BMPファイルにしてOpenCV で顔認証するソフトウェアを作った
カメラで撮影した画像をBMPファイルに変換してから、そのBMPファイルをOpenCVで顔 認証するソフトウェアを作った。
OpenCVの顔認証ソフト ウェア (facedetect.cpp) の scale について
MT9D111カメラモジュールで撮影した画像をBMPファイルに落として、そのBMPファイ ルを OpenCV 2.4.10 の facedetect.cpp を使って顔認証を行うソフトウェアを作ったので、顔認証を実際にやってみた。

ZYBOのARMhfの Debian Wheezy 7.5にOpenCV 2.4.10をインストール
ZYBOのDigilent Linux KernelにARMhfの Debian Wheezy 7.5 の Root File Systemsを入れて動作した。
今回は、それに、OpenCV 2.4.10 を入れてみた。
ZYBOのARMhfのUbuntu 14.04 LTS にOpenCV 2.4.10をインストール
ZYBOのARMhfのUbuntu 14.04 LTS にも、OpenCV 2.4.10をインストールした。

OpenCV 2.4.10 の stereo_calib.cpp をやってみた
”ステレオカメラによる距離測定テスト14(ステレオカメラ・キャリブレーション方法の参考に なるWebサイト)”でやると言っていた opencv-2.4.10/samples/cpp の stereo_calib.cpp をやってみることにした。これは、ステレオカメラのキャリブレーション用ソフトウェアだ。
OpenCV 2.4.10 の stereo_match.cpp をやってみた
前回は、stereo_calib.cpp を使って、左目カメラ画像と右目カメラ画像のキャリブレーションを行い、2つのキャリブレーション・ファイルを出力した。今回は、stereo_match.cpp を使用して、2つのキャリブレーション・ファイルを入力して、左目カメラ画像と右目カメラ画像を補正してみた。
OpenCV 2.4.10 の stereo_match.cpp をやってみた2
stereo_match.cpp をやってみて、面白かったので、もう少しやってみた。
OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた3
いろいろと失敗してきた”OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた”ですが、ついにうまく行った。
勝因は、チェスボードに黒枠をつけたのと、チェスボードが大きめに画面に写っていたほうが良い みたいだ。
OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた4(stereo_match_cam.cpp の作成)
前回で、”OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた”が上手く行った。でも、これは、右目カメラ画像と左目カメラ画像をBMPファイル変換して、そのBMPファイルに対して stereo_match を起動して、disparity を計測した。これだとBMPファイルにする手間があるので、右目カメラ画像と左目カメラ画像をバッファしているフレームバッファから直接、画像を取得して、 stereo_match するようにソフトウェアを書き換えた。これを stereo_match_cam.cpp とした。

Vivado HLS 2015.4 で OpenCV を使ってみた7(FAST Corners Detection 1)
前回までは、Sobel フィルタの動作について試してみたが、今回は、その次の”FAST Corners Detection”を試してみる。
Vivado HLS 2015.4 で OpenCV を使ってみた8(FAST Corners Detection 2)
前回は、C シミュレーションまで行った。今回は、C コードの合成とIP化を行った。

FASTXコーナー検出IPのカメラ表示システム1(プロジェクト作成)
”Vivado HLS 2015.4 で OpenCV を使ってみた8(FAST Corners Detection 2)”のFASTXコーナー検出IPを使って、カメラ表示システムを作ることにした。
FASTXコーナー検出IP のカメラ表示システム3(Vivado HLS 2016.1でやってみた1)
一昨日、Vivado 2016.1 が出たので、FASTX コーナー検出IP をVivado HLS 2016.1 で再度やってみることにした。

Vivado HLS 2016.1 で OpenCV の Sobel フィルタを試してみた
Sobel フィルタをVivado 2016.1 でやってみた。

OpenCV の X軸方向 Sobel フィルタ IP のカメラ表示システム
”Vivado HLS 2016.1 で OpenCV の Sobel フィルタを試してみた”で作った X軸方向 Sobel フィルタの IP をカメラ表示システムに入れて、Sobel フィルタ出力が表示されるかどうか?を調べてみた。これが表示されれば、 hls::AXIvideo2Mat() や hls::Mat2AXIvideo() の動作は正しく、FASTX が問題なのでは?という可能性が高まる。
FASTXコーナー検出IP のカメラ表示システム4(Vivado HLS 2016.1でやってみた2)
”Accelerating OpenCV Applications with Zynq-7000 All Programmable SoC using Vivado HLS Video Libraries, XAPP1167 (v3.0) June 24, 2015”の 10 ページを見ると、FASTX のレイテンシが最大 7 lines で、Dilate レイテンシが最大 3 lines なので、10 ライン分のFIFO バッファを入れる必要があったようだ。今回の実装では、カメラの画像が 800 ピクセル / line なので、800 ピクセル X 10 lines = 8000 以上のFIFO バッファが必要になるようだ。これを忘れていたので、実装しよう。なお、FIFO バッファ数は8000 以上の 2 の n 乗の数を選定した。8196 で 2 の 13 乗だ。
FASTXコーナー検出IP のカメラ表示システム5(Vivado HLS 2016.1でやってみた3)
前回は、hls::Duplicate() で複製された img_1_ の data_stream に hls::FASTX() と hls::Dilate() の最大レイテンシの 7 行と 3 行を足した 10 行分より多い 2 の 13 乗の 8196 個の FIFO バッファを付けるように STREAM ディレクティブを指定した。
今回は、前回作製した FASTX コーナー検出IP を使用して、Vivado 2016.1 で論理合成、インプリメントを行って、SDKでZYBO にコンフィグレーションしアプリケーションを起動して、 FASTX コーナー検出できるかどうかを確かめた。
FASTX コーナー検出の改良1(threshold をソフトウェアで変更可能にする)
前回までで、出来上がったFASTX コーナー検出だが、Xilinx Wiki の HLS FASTX の threshold は 20 に固定したままだ。そこで、threshold を変更できるようにしてみた。
FASTX コーナー検出の改良2(threshold をソフトウェアで変更可能にする)
前回は、threshold をソフトウェアで変更可能にして、いろいろなthreshold の値でC シミュレーションを行った。今回はC コードの合成、IPへのパッケージを行う。
FASTX コーナー検出の改良3(threshold をソフトウェアで変更可能にする)
前回は、Vivado HLS 2016.1 でC コードの合成とIP へのパッケージを行った。今回は、その threshold を変更できるFASTX コーナー検出IP をカメラ表示システムに組み込んで、ZYBO にダウンロードしてやってみた。

ZYBO 上のOpenCV で白線検出1(equalizeHist() を使用した場合)
”Vivado HLS を使用した車の白線検出9(Canny フィルタ3)”で、大体Vivado HLS による C シミュレーションでは白線検出が出来てきたと思うので、本命のZYBO のOpenCV 環境でまずはソフトウェアで、どのくらいの速度で白線検出をできるかどうかをテストしてみた。
ZYBO 上のOpenCV で白線検出2(equalizeHist() を使用した場合2)
前回は、equalizeHist() を使用し、Canny フィルタを掛けて、HoughLine 変換で道路の白線検出を行った。しかし、画像を読み込む時点で白黒画像に変換していた。ハードウェアでは、カメラで撮影した画像を白黒変換して、Canny フィルタを掛ける予定なので、白黒画像変換の部分の経過時間も測る必要がある。それでC++ ソースコードを修正した。更に、白黒画像変換+Canny フィルタの経過時間を測定した。
ZYBO 上のOpenCV で白線検出3(Canny フィルタのみの場合)
今回は前回のコードはそのままに、10行目の”#define HIST”をコメントアウトして、equalizeHist() を使用しないで、Canny フィルタのみで白線検出を行うことにする。なお、Canny フィルタのスレッショルドは、試行錯誤して、最適化したつもりだ。

Vivado HLSのビデオ プロセッシング関数を使用したOpenCVのFPGAアクセラレーション
この記事は”OpenCV Advent Calendar 2016”の23日目の記事として書きます。

Ubuntu 16.04 にOpenCV 3.1.0 をインストールした
白線追従用の画像を処理するためにUbuntu 16.04 にOpenCV 3.1.0 をインストールすることにした。
なお、”Ubuntu 16.04にOpenCV 3.1をインストールする手順”を参考にさせていただいた。
Ubuntu 16.04 にOpenCV 3.3.0 rc をインストールした
前回は、Ubuntu 16.04 にOpenCV 3.1.0 をインストールしようとしたのだが、make でエラーになってしまった。どうやらCUDA 8.0 が悪さしているようだというのがわかった。dandelion さんからOpenCV 3.2 だったら大丈夫と教えていただいたので、OpenCV 3.2 以降をインストールすることにした。

Ubuntu 16.04 上のVivado HLS 2017.2 でOpenCV を使用したプロジェクトでエラー発生
Ubuntu 16.04 上のVivado HLS 2017.2 でOpenCV を使用したプロジェクトで libjpeg.so.62 と libtiff.so.3 が無いと言われてコンパイルできなかったので、解決方法を書いておく。なお、VirtualBox 上のUbuntu 16.04 上のVivado HLS 2016.4 でも同様だった。

ZYBO-Z7-20のDebianにOpenCV 3.1.0をインストール
”@ikwzmさんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”をやってみる1”で作りなおしたZYBO-Z7-20のDebianにOpenCV3.1.0をインストールした。

Ultra96 のDebian にOpenCV 3.4.3 をインストール1
Ultra96 のDebian にOpenCV 3.4.3 をインストールしてみたいということでやってみた。
Ultra96 のDebian にOpenCV 3.4.3 をインストール2
前回は、Ultra96 にOpenCV 3.4.3 をインストールして、demo.py が起動したが、cv.namedWindow('edge') でエラーになった。今回は、その続きをやってみよう。
Ultra96 のDebian にOpenCV 3.4.3 をインストール3
前回は、demo.py からいろいろなOpenCV のサンプルを起動できるようになった。今回は、環境を整備して ffmpeg とかも入れてみようと思う。

Ultra96 のDebianにインストールしたOpenCV-3.4.3のC++サンプルデザインをコンパイル
Ultra96 のDebian にインストールしたOpenCV-3.4.3 のC++ サンプルデザインをコンパイルしてみた。



inserted by FC2 system