我编写了一个OpenCV模板匹配类,Netbeans并且在JVM.
只是我想把它变成android应用程序。但我以前对 Android 编程不感兴趣。所以我阅读了教程并决定IntentService看起来对我的目标很好。因为我不希望任何 UI 只处理图像并获取结果图像。
我终于导入OpenCV了我的简单 Android 项目。Template Matching在Android中运行良好JVM但在Android中出现错误。只是我更改了 Android 的图像文件路径形式。并在JVM.
- 编辑 -
我将图像文件复制到 Android 虚拟设备下载文件夹。我用虚拟设备测试它。
让我分享我的代码和结果;
MyService.java (Android 工作室)
import android.content.Intent;
import android.app.IntentService;
import org.opencv.core.Core;
import org.opencv.core.Core.MinMaxLocResult;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class MyService extends IntentService {
public MyService() {
super("MyService");
}
@Override
protected void onHandleIntent(Intent workIntent) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat img = Imgcodecs.imread("/sdcard/Download/bigpicture.png");
Mat templ = Imgcodecs.imread("/sdcard/Download/template.png");
String outFile = "/sdcard/Download/result.png";
// Create the result matrix
int result_cols = img.cols() - templ.cols() + 1;
int result_rows = img.rows() - templ.rows() + 1;
Mat result = new Mat(result_rows, result_cols, CvType.CV_32FC1);
// Do the Matching Normalize and Perform the template matching operation
Imgproc.matchTemplate(img, templ, result, 3);
// Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
Imgproc.threshold(result, result,0.98,1,Imgproc.THRESH_TOZERO);
// Localizing the best match with minMaxLoc. We localize the minimum and maximum values in the result matrix R by using minMaxLoc.
Point matchLoc;
Point maxLoc;
Point minLoc;
HUX布斯
喵喔喔
相关分类