【Android】Test JavaCV & OpenCV
来源:互联网 发布:卷积神经网络模型算法 编辑:程序博客网 时间:2024/05/16 05:11
opencv_contrib.FaceRecognizer faceRec = com.googlecode.javacv.cpp.opencv_contrib.createEigenFaceRecognizer();// opencv_contrib.FaceRecognizer eigenRecog = com.googlecode.javacv.cpp.opencv_contrib.createEigenFaceRecognizer();// opencv_contrib.FaceRecognizer fischerRecog = com.googlecode.javacv.cpp.opencv_contrib.createFisherFaceRecognizer();// opencv_contrib.FaceRecognizer lbphRecog = com.googlecode.javacv.cpp.opencv_contrib.createLBPHFaceRecognizer();
try{ //获取原图 Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)); Mat mat_src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4); Utils.bitmapToMat(bitmap, mat_src); int nnHeight = bitmap.getHeight()/10; int nnWidth = bitmap.getWidth()/10; Mat mat_bits = new Mat(nnHeight, nnWidth, CvType.CV_8UC4); Imgproc.resize(mat_src, mat_bits, new Size(nnWidth, nnHeight)); Bitmap bmp_gray0 = Bitmap.createBitmap(mat_bits.cols(), mat_bits.rows(), Bitmap.Config.ARGB_8888 ); Utils.matToBitmap(mat_bits, bmp_gray0); picture.setImageBitmap(bitmap); Mat mGray = new Mat(nnHeight, nnWidth, CvType.CV_8UC1); Imgproc.cvtColor(mat_src, mGray, Imgproc.COLOR_BGRA2GRAY, 1); //检测并显示 MatOfRect faces = new MatOfRect(); if (cascadeClassifier != null) { cascadeClassifier.detectMultiScale(mGray, faces, 1.1, 2, 2, new Size(mGray.height()/5, mGray.height()/5), new Size()); } Rect[] facesArray = faces.toArray();// Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.src01);// Mat rgbMat = new Mat(bitmap1.getWidth(), bitmap1.getHeight(), CvType.CV_8UC4);// Mat gryMat = new Mat();// Utils.bitmapToMat(bitmap1, rgbMat);// Imgproc.cvtColor(rgbMat, gryMat, Imgproc.COLOR_RGB2GRAY);// int nHeight = 100;// int nWidth = 100;// Mat mat_template = new Mat(nHeight, nWidth, CvType.CV_8UC1);// Imgproc.resize(gryMat, mat_template, new Size(nWidth, nHeight)); //--------------------- int nHeight = 100; int nWidth = 100;// Mat rgbMat1 = new Mat(bitmap1.getWidth(), bitmap1.getHeight(), CvType.CV_8UC4);// Utils.bitmapToMat(bitmap1, rgbMat1);// Mat gryMat1 = new Mat(rgbMat1.cols(), rgbMat1.rows(), CvType.CV_8UC1);// Imgproc.cvtColor(rgbMat1, gryMat1, Imgproc.COLOR_RGB2GRAY);// Mat mat_template1 = new Mat(nHeight, nWidth, CvType.CV_8UC1);// Imgproc.resize(gryMat1, mat_template1, new Size(nWidth, nHeight));//// Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.img_02);// Mat rgbMat2 = new Mat(bitmap2.getWidth(), bitmap2.getHeight(), CvType.CV_8UC4);// Utils.bitmapToMat(bitmap2, rgbMat2);// Mat gryMat2 = new Mat(rgbMat2.cols(), rgbMat2.rows(), CvType.CV_8UC1);// Imgproc.cvtColor(rgbMat2, gryMat2, Imgproc.COLOR_RGB2GRAY);// Mat mat_template2 = new Mat(nHeight, nWidth, CvType.CV_8UC1);// Imgproc.resize(gryMat2, mat_template2, new Size(nWidth, nHeight));// Bitmap bitmap3 = BitmapFactory.decodeResource(getResources(), R.drawable.img_11);// Mat rgbMat3 = new Mat(bitmap3.getWidth(), bitmap3.getHeight(), CvType.CV_8UC4);// Utils.bitmapToMat(bitmap3, rgbMat3);// Mat gryMat3 = new Mat();// Imgproc.cvtColor(rgbMat3, gryMat3, Imgproc.COLOR_RGB2GRAY);// Mat mat_template3 = new Mat(nHeight, nWidth, CvType.CV_8UC1);// Imgproc.resize(gryMat3, mat_template3, new Size(nWidth, nHeight));//// Bitmap bitmap4 = BitmapFactory.decodeResource(getResources(), R.drawable.img_12);// Mat rgbMat4 = new Mat(bitmap4.getWidth(), bitmap4.getHeight(), CvType.CV_8UC4);// Utils.bitmapToMat(bitmap4, rgbMat4);// Mat gryMat4 = new Mat();// Imgproc.cvtColor(rgbMat4, gryMat4, Imgproc.COLOR_RGB2GRAY);// Mat mat_template4 = new Mat(nHeight, nWidth, CvType.CV_8UC1);// Imgproc.resize(gryMat2, mat_template4, new Size(nWidth, nHeight)); //------------- opencv_contrib.FaceRecognizer faceRec = new opencv_contrib.FaceRecognizer(); opencv_core.MatVector var1 = new opencv_core.MatVector(2); Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.img_01); opencv_core.IplImage imgTemp1 = bitmapToIplImage(bitmap1); Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.img_02); opencv_core.IplImage imgTemp2 = bitmapToIplImage(bitmap2); int[] var2 = {1,1}; var1.put(0, imgTemp1); var1.put(1, imgTemp2); faceRec.train(var1, var2); for (int i = 0; i <facesArray.length; i++) { Core.rectangle(mat_src, facesArray[i].tl(), facesArray[i].br(), new Scalar(0, 255, 0, 255), 3); Point pt = new Point(); pt.x = facesArray[i].br().x; pt.y = facesArray[i].br().y; String str_x = Double.toString(pt.x); String str_y = Double.toString(pt.y); Mat copyMat = mGray.submat(facesArray[i]); Mat mat_source = new Mat(nHeight, nWidth, CvType.CV_8UC1); Imgproc.resize(copyMat, mat_source, new Size(nWidth, nHeight)); //int[] lll = new int[10]; //double[] ddd = new double[10]; int[] predicted_label = {-1}; double[] predicted_confidence = {0.0}; opencv_core.IplImage sourceImg = bitmapToIplImage(bitmap); faceRec.predict(sourceImg, predicted_label, predicted_confidence); String str = str_x + ", " + str_y + " Pe:" + predicted_label + " Si:"+predicted_confidence; Core.putText(mat_src,str, pt, Core.FONT_HERSHEY_SIMPLEX, 1, new Scalar(255,23,0),2); Bitmap bmp_dst = Bitmap.createBitmap(copyMat.cols(), copyMat.rows(), Bitmap.Config.ARGB_8888 ); Utils.matToBitmap(copyMat, bmp_dst); String str2 = getRandomString(8)+".png"; saveBitmap(bmp_dst, str2); } //图像显示 Bitmap bmp_gray = Bitmap.createBitmap(mat_src.cols(), mat_src.rows(), Bitmap.Config.ARGB_8888 ); Utils.matToBitmap(mat_src, bmp_gray); picture2.setImageBitmap(bmp_gray);// int nHeight = bitmap.getHeight()/10;// int nWidth = bitmap.getWidth()/10;// Mat mat_small = new Mat(nHeight, nWidth, CvType.CV_8UC4);// Imgproc.resize(mat_src, mat_small, new Size(nWidth, nHeight)); //图像处理 //Mat mat_src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4); //Utils.bitmapToMat(bitmap, mat_src);// int nHeight = bitmap.getHeight()/10;// int nWidth = bitmap.getWidth()/10;// Mat mat_small = new Mat(nHeight, nWidth, CvType.CV_8UC4);// Imgproc.resize(mat_src, mat_small, new Size(nWidth, nHeight));// Mat mat_gray = new Mat(mat_small.cols(), mat_small.rows(), CvType.CV_8UC1);// Imgproc.cvtColor(mat_small, mat_gray, Imgproc.COLOR_BGRA2GRAY, 1);//// //-------------------------------------------------------------------// Mat frame = new Mat(mat_small.cols(), mat_small.rows(), CvType.CV_8UC4);// mat_small.copyTo(frame);//// Mat frameHSV = new Mat(mat_small.cols(), mat_small.rows(), CvType.CV_8UC3);; // hsv空间// Mat mask = new Mat(mat_small.cols(), mat_small.rows(), CvType.CV_8UC1);// Mat dst = new Mat(mat_small.cols(), mat_small.rows(), CvType.CV_8UC3); // 输出图像// //dst.copyTo(frame);// // 中值滤波,去除椒盐噪声// Imgproc.medianBlur(frame, frame, 5);// Imgproc.cvtColor(frame, frameHSV, Imgproc.COLOR_RGB2HSV, 3);// Mat dstTemp1 = new Mat(mat_small.cols(), mat_small.rows(), CvType.CV_8UC1);// Mat dstTemp2 = new Mat(mat_small.cols(), mat_small.rows(), CvType.CV_8UC1);// // 对HSV空间进行量化,得到二值图像,亮的部分为手的形状// Core.inRange(frameHSV, new Scalar(0, 30, 30), new Scalar(40, 170, 256), dstTemp1);// Core.inRange(frameHSV, new Scalar(156, 30, 30), new Scalar(180, 170, 256), dstTemp2);// Core.bitwise_or(dstTemp1, dstTemp2, mask);// //dstTemp1.copyTo(mask);// // 形态学操作,去除噪声,并使手的边界更加清晰// Mat element = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3));// Imgproc.erode(mask, mask, element);// Imgproc.morphologyEx(mask, mask, Imgproc.MORPH_OPEN, element);// Imgproc.dilate(mask, mask, element);// Imgproc.morphologyEx(mask, mask, Imgproc.MORPH_CLOSE, element);//// frame.copyTo(dst, mask); //------------------------------------------------------------------- }catch (FileNotFoundException e){ e.printStackTrace(); }
0 0
- 【Android】Test JavaCV & OpenCV
- 【Android】JavaCV and OpenCV
- 请问一下Android Studio如何配置JAVACV 0.8Javacv+2.4.9Opencv 万分感谢
- Android 人脸识别+人脸匹配(OpenCV+JavaCV)
- Android 人脸识别+人脸匹配(OpenCV+JavaCV)
- 【Android】Android使用OpenCV实现人脸识别(OpenCV+JavaCV)
- OpenCV+VS2010+JavaCV+Eclipse+Win7
- OpenCV+VS2010+JavaCV+Eclipse+Win7
- android+javaCV环境配置
- Android使用OpenCV和FFMpeg的简单方法-开源项目javacv的使用
- javacv
- javacv
- JavaCV
- OpenCV-2.4.4 + javacv-0.4 +eclipse
- OpenCV-2.4.4 + javacv-0.4 +eclipse
- Differences between OpenCV JavaCV and OpenCV4Android
- Differences between OpenCV JavaCV and OpenCV4Android
- OpenCV+JavaCV实现人脸识别
- 关于Fragment+viewpager的取消预加载(懒加载)
- LINUX目录结构重要性
- 第14章-对象作为参数(1)
- MAC配置环境变量
- 踩过的Windows XP下连接VPN(L2TP)的一个杭
- 【Android】Test JavaCV & OpenCV
- 银联支付java版
- 费曼技巧学习
- Android Studio 学习笔记
- 【linux】查看文件或文件夹大小
- Intellij IDEA使用总结
- Debian/ Ubuntu ORA-00845: MEMORY_TARGET not supported on this system
- 【数据库Mysql】——初识索引
- FLUME 小结