2015-11-01 50 views
0

我想在android中的多个模板匹配。我写了一段代码,但在此代码中,当我尝试使用“Utils”转换matToBitmap时。它说Utils不能重新解决。我添加了JRE系统库。导入很多包,但没有解决这个问题。这里是我的代码:Utils无法解析在Android Opencv

package com.example.tryapp; 
import org.opencv.core.Core; 
import org.opencv.core.CvType; 
import org.opencv.core.Mat; 
import org.opencv.core.Point; 
import org.opencv.core.Scalar; 
import org.opencv.core.Core.MinMaxLocResult; 
import org.opencv.imgcodecs.Imgcodecs; 
import org.opencv.imgproc.Imgproc; 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.support.v7.app.ActionBarActivity; 
import android.widget.ImageView; 

[I imported all of this package one by one but none of this work][1] 


public class tmpmatch extends Activity{ 

static void match() 
{ 

int match_method=Imgproc.TM_CCOEFF; 
String img ="res/drawable/lena.png"; 
String tm1img ="res/drawable/those_eyes.png"; 
String tm2img ="res/drawable/eye2.png"; 
String outFile="res/drawable/tmp.png"; 
Mat mimg=Imgcodecs.imread(img); 
Mat mtm1img=Imgcodecs.imread(tm1img); 
Mat mtm2img=Imgcodecs.imread(tm2img); 
int result_cols = mimg.cols() - mtm1img.cols() + 1; 
int result_rows = mimg.rows() - mtm1img.rows() + 1; 
int result_cols2 = mimg.cols() - mtm2img.cols() + 1; 
int result_rows2 = mimg.rows() - mtm2img.rows() + 1; 
Mat result = new Mat(result_rows, result_cols, CvType.CV_32FC1); 
Mat result2 = new Mat(result_rows2, result_cols2, CvType.CV_32FC1); 

Imgproc.matchTemplate(mimg, mtm1img, result,Imgproc.TM_CCOEFF); 
Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat()); 
Imgproc.matchTemplate(mimg, mtm2img, result2, Imgproc.TM_CCOEFF); 
Core.normalize(result2, result2, 0, 1, Core.NORM_MINMAX, -1, new Mat()); 

MinMaxLocResult mmr = Core.minMaxLoc(result); 
MinMaxLocResult mmr2 = Core.minMaxLoc(result2); 

Point matchLoc,matchLoc2; 
if (match_method == Imgproc.TM_SQDIFF || match_method == Imgproc.TM_SQDIFF_NORMED) { 
    matchLoc = mmr.minLoc; 
    matchLoc2 = mmr2.minLoc; 
} else { 
    matchLoc = mmr.maxLoc; 
    matchLoc2 = mmr2.maxLoc; 
} 

///Show me what you got 
Imgproc.rectangle(mimg, matchLoc, new Point(matchLoc.x + mtm1img.cols(), 
     matchLoc.y + mtm1img.rows()), new Scalar(0, 255, 0)); 
Imgproc.rectangle(mimg, matchLoc2, new Point(matchLoc2.x + mtm2img.cols(), 
     matchLoc2.y + mtm2img.rows()), new Scalar(0, 255, 0)); 


// Save the visualized detection. 
//System.out.println("Writing "+ outFile); 
//Imgcodecs.imwrite(outFile, mimg); 
//System.out.println("written"); 

Mat android_image = Mat.zeros(mimg.cols(), mimg.rows(), CvType.CV_8UC1); 

Imgproc.cvtColor(mimg, android_image, Imgproc.COLOR_BGR2RGB); 

Bitmap bm = Bitmap.createBitmap(android_image.cols(),android_image.rows(), Bitmap.Config.ARGB_8888); 

Utils.matToBitmap(android_image, bm); 

ImageView iv = (ImageView) findViewById(R.id.image); 
iv.setImageBitmap(bm); 


} 
public static void main(String[] args) { 
     System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
     match(); 

} 

}

+0

请帮我看看我卡在这里。我正在使用opencv 3.00 – user2215160

回答