2017-06-19 9 views
0

私はビデオからキャプチャした画像フレームからオブジェクトを検出できるアンドロイドアプリケーションを作っています。OpenCV、Android:リアルタイム検出ではなく画像からオブジェクトを検出する

openCVのサンプルアプリケーションでは、リアルタイム検出の例しかありません。

追加情報: -I'm私は物体を検出し、その周りに四角形を描画するためのOpenCVを使用する方法、ImageViewの配列でキャプチャされたフレームを格納しています今のところHaar分類

を使用して?

for(int i=0 ;i <6; i++) 
     { 
      ImageView imageView = (ImageView)findViewById(ids_of_images[i]); 

      imageView.setImageBitmap(retriever.getFrameAtTime(looper,MediaMetadataRetriever.OPTION_CLOSEST_SYNC)); 
      Log.e("MicroSeconds: ", ""+looper); 
      looper +=10000; 
     } 

答えて

2

私はあなたのプロジェクトにopencv 4 android libraryを統合していただきたいと思います。 さて、あなたは一度OpenCVの機能

Mat srcMat = new Mat(); 
Utils.bitmapToMat(yourbitmap,srcMat); 

を使用してマットに画像を変換することができ、あなたは、画像から矩形オブジェクトを見つけるために、OpenCVの関数を適用することができますマットを持っています。

Mat mGray = new Mat(); 
cvtColor(mRgba, mGray, Imgproc.COLOR_BGR2GRAY, 1); 
Imgproc.GaussianBlur(mGray, mGray, new Size(3, 3), 5, 10, BORDER_DEFAULT); 
Canny(mGray, mGray, otsu_thresold, otsu_thresold * 0.5, 3, true); // edge detection using canny edge detection algorithm 
List<MatOfPoint> contours = new ArrayList<>(); 
Mat hierarchy = new Mat(); 
Imgproc.findContours(mGray,contours,hierarchy,Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE); 

今、あなたは画像から輪郭を持っている: さて、四角形を検出するためのコードに従ってください。だから、あなたはそれから最大輪郭を取得し、drawContour()メソッドを使用して、それを描くことができます:

for (int contourIdx = 0; contourIdx < contours.size(); contourIdx++){ 
Imgproc.drawContours(src, contours, contourIdx, new Scalar(0, 0, 255)-1); 
} 

をすれば完了です!このリンクを参照することができます: Android using drawContours to fill region

希望すると助かります!

関連する問題