Tag: opencv

如何在Android的OpenCV中在Touch上的框架上绘制多个矩形?

首先,我在Eclipse上做这个。 我希望在接收Touch事件时绘制一个矩形。 那个矩形应该是持久的,另一个Touchevent应该绘制另一个矩形。 3.我已经设法让它在一个TouchEvent中持久化,然后根据坐标移动。 因为不同的触摸事件,我基本上应该有多个矩形。 我正在考虑迭代数组…但我仍然感到困惑请帮忙! 这个不起作用……我要求改进……谢谢! 还有清单和东西是正确的,权限是正确的! 代码有点像: package code.e14.balldetector; import org.opencv.android.BaseLoaderCallback; import org.opencv.android.CameraBridgeViewBase; import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2; import org.opencv.android.LoaderCallbackInterface; import org.opencv.android.OpenCVLoader; 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 android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MotionEvent; import android.view.SurfaceView; import android.view.View; import android.view.View.OnTouchListener; import android.view.WindowManager; public class MainActivity extends […]

掩码未在OpenCV相机预览中显示

我想创建一个简单的Android应用程序,它使用OpenCV在检测到的面上放置一个掩码,例如: 面部检测教程 我为我的应用程序将C ++翻译成Java。屏幕调整得很好,白色部分被删除(我在预览中的ImageView中显示测试结果)但是屏幕从未出现在绿色矩形中检测到的面上: 结果截图 我的代码: public Mat onCameraFrame(CvCameraViewFrame inputFrame) { […] for( int i = 0; i < facesArray.length; i++) min_face_size = facesArray[0].width*0.7; max_face_size = facesArray[0].width*1.5; Point center=new Point (facesArray[i].x + facesArray[i].width/2, facesArray[i].y + facesArray[i].height/2); mRgba=putMask(mRgba,center, new Size(facesArray[i].width, facesArray[i].height)); } return mRgba; } Mat putMask(Mat src, Point center, Size face_size) { //mask : loaded […]

openCV:创建一个特征匹配,输出数组的意思,java

以下代码(使用用于图像处理的 openCV -libraries以Java编写)生成类MatOfDMatch的输出。 问题是我不明白数组中的值告诉我匹配的内容: FeatureDetector fastFeatureDetector = FeatureDetector .create(FeatureDetector.FAST); DescriptorExtractor surfDescriptorExtractor = DescriptorExtractor .create(DescriptorExtractor.SURF); DescriptorMatcher flannDescriptorMatcher = DescriptorMatcher .create(DescriptorMatcher.FLANNBASED); Mat image1 = Highgui.imread(myPicPath); Mat image2 = Highgui.imread(myPicPath2); ArrayList keypoints1 = new ArrayList(); keypoints1.add(new MatOfKeyPoint()); ArrayList keypoints2 = new ArrayList(); keypoints2.add(new MatOfKeyPoint()); fastFeatureDetector.detect(image1, keypoints1.get(0)); fastFeatureDetector.detect(image2, keypoints2.get(0)); Mat descriptor1 = new Mat(); Mat descriptor2 = new Mat(); […]

Java中的OpenCV drawContours

我正在尝试在图像中的对象周围绘制轮廓但是我得到错误OpenCV Error: Unsupported format or combination of formats ([Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only) in cvStartFindContours, file C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\imgproc\src\contours.cpp, line 198 我试图转换图像但错误仍然存​​在如何使用DrawContour? Mat imageInMat = Imgcodecs.imread(“C:/Users/ja/workspace/imgtomath/bin/imgtomath/lena.png”); if(imageInMat.empty()== true) {System.out.println(“Error no image found!!”);} imageInMat.convertTo(imageInMat, CvType.CV_32SC1); List contours = new ArrayList(); Mat hierarchy = new Mat(); Imgproc.findContours(imageInMat, contours, hierarchy, Imgproc.RETR_FLOODFILL, […]

OpenCV Java绑定VideoCapture从文件静默失败

我正在使用提供的Windows 64bit Java jar的OpenCV 2.4.8。 到目前为止,我一直在目前的环境中充分利用OpenCV。 我无法使用VideoCapture类打开video文件,但网络摄像头Feed工作正常。 以下工作正如预期的那样, video.isOpened返回true VideoCapture video = new VideoCapture(); boolean result = video.open(0); 以下失败, video.isOpened返回false VideoCapture video = new VideoCapture(); boolean result = video.open(“res/hand-test-1.mp4”); 两种文件格式似乎都没有区别(这些都是转换的,而不仅仅是希望重命名) video.open(“res/hand-test-1.mp4”); video.open(“res/hand-test-1.avi”); video.open(“res/hand-test-1.wmv”); 位置似乎也不重要。 video.open(“C:/hand-test-1.mp4”); video.open(“C:\\hand-test-1.mp4”); video.open(“hand-test-1.mp4”); 垃圾,也没有exception从OpenCV通过Java启动,似乎无声地失败。 video.open(“ashdkfhkajsjdfkhaksdf”); PATH包含随opencv安装提供的ffmpeg目录, C:\dev\opencv\sources\3rdparty\ffmpeg 现在我的想法已经用完了,看起来我通过video.open(String)扔给本地的video.open(String)都会返回false。 任何帮助将非常感激

将OpenCV代码从C ++转换为Java

我目前正在尝试将一些遗留代码从iPhone迁移到Android。 此代码使用OpenCV库进行一些图像处理。 总的来说它很顺利,但我坚持使用一行代码,我不知道如何将其转换为Java代码: Scalar dMean; Scalar scalar; std::vector channels; split(mat, channels); for(int i=0; i<3; ++i) { channels[i] += dMean[i]; } 问题是 – 在Java代码中应该使用什么代替+ =运算符来将Scalar对象添加到Mat?

Java和haarcascade面部和嘴部检测 – 嘴巴作为鼻子

今天我开始测试在Java和OpenCv中检测微笑的项目。 用于识别面部和嘴部项目使用haarcascade_frontalface_alt和haarcascade_mcs_mouth但我不明白为什么在某些原因项目检测鼻子为嘴。 我有两种方法: private ArrayList detectMouth(String filename) { int i = 0; ArrayList mouths = new ArrayList(); // reading image in grayscale from the given path image = Highgui.imread(filename, Highgui.CV_LOAD_IMAGE_GRAYSCALE); MatOfRect faceDetections = new MatOfRect(); // detecting face(s) on given image and saving them to MatofRect object faceDetector.detectMultiScale(image, faceDetections); System.out.println(String.format(“Detected %s faces”, faceDetections.toArray().length)); MatOfRect mouthDetections […]

Opencv打开一个video文件,但捕获isOpened总是很糟糕

我试图用opencv java接口来捕获video,我发现isOpened总是假的。 我尝试过不同的video格式和不同的版本(2.4.11和3.0.0),都遇到了同样的问题。 我已配置“-Djava.library.path = D:\ Project \ opencv \ opencv3.0 \ build \ x64 \ vc12 \ bin”,并已将opencv_java300.dll复制到此文件夹。 我检查了提示OpenCV 3.0 VideoCapture无法在Java中打开video文件 , OpenCV 2.4 VideoCapture无法在Windows上运行 ,也不适用于我。 任何人都知道捕获video的技巧部分是什么? 我的示例代码是: VideoCapture capture=new VideoCapture(); capture.open(“D:\\StopMoti2001.mpeg”); if(!capture.isOpened()){ return; }

使用opencv的Android应用程序:如何在不覆盖的情况下保存图像?

当我选择一个选项时,我正在使用以下代码将图像保存到文件夹: File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); String filename = “teste.png”; File file = new File(path, filename); filename = file.toString(); Highgui.imwrite(filename, mRgba); 但我希望保存的图像不会覆盖已经在文件夹中的图像。 我怎么能这样做? 对于每个图像或类似的东西使用一种索引,我想,​​但是怎么样? 谢谢。

使用JavaCV在Java中使用OpenCV语句的等效项

我想知道如何使用JavaCV在OpenCV中构造以下C ++语句: float* p = (float*)cvGetSeqElem(circles, i); int radius = cvRound(p[2]); 使用cvHoughCircles()检测圆的半径。 显然Java不使用指针,所以我不知道如何在Java中这样做。 到目前为止我的代码所以你可以看到它的上下文: lines = cvHoughCircles(frame2, storage, CV_HOUGH_GRADIENT, 1, 50, 300, 60, 10, 600); for (int i = 0; i < lines.total(); i++) { //Would like the code to go here CvPoint2D32f point = new CvPoint2D32f(cvGetSeqElem(lines, i)); cvCircle(src, cvPoint((int)point.x(), (int)point.y()), 3, CvScalar.WHITE, -1, 8, […]