Articles of opencv

在Android上的OpenCV中旋转VideoCapture

在OpenCV上使用类VideoCapture时如何旋转相机? (Android上的样本人脸检测)。 我正在旋转canvas: if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { Matrix matrix = new Matrix(); matrix.preTranslate( (canvas.getWidth() – bmp.getWidth()) / 2, (canvas.getHeight() – bmp.getHeight()) / 2); matrix.postRotate(270f, (canvas.getWidth()) / 2, (canvas.getHeight()) / 2); canvas.drawBitmap(bmp, matrix, null); } 但是来自相机的图像不会旋转:面部检测不起作用。 摄像机从以下接收流: protected Bitmap processFrame(VideoCapture capture) { capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA); capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME); 更新我做了以下事情: @Override protected Bitmap processFrame(VideoCapture capture) { if (getResources().getConfiguration().orientation […]

使用opencv(Java)的阈值图像

我正在为我的项目使用Opencv。 我需要将下面的图像转换为阈值图像 我试过这个function: Imgproc.threshold(imgGray, imgThreshold, 0, 255, Imgproc.THRESH_BINARY + Imgproc.THRESH_OTSU); 但结果并不那么好,如下所示 所以我尝试了adaptiveThreshold function : Imgproc.adaptiveThreshold(imgGray, imgThreshold, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY, 11, 2); 结果如下: 我只是期望二进制图像只有白色背景和黑色文本,没有黑色区域或噪音(我不喜欢使用Photo.fastNlMeansDenoising因为它需要很多时间)。 请帮我解决这个问题。 此外,我使用Tesseract进行日语识别,但准确率不高。 您对日本的更好OCR或任何提高Tesseract质量的方法有什么建议吗?

错误:在PATH中找不到程序“/ndk-build.cmd”

我在Mac OS X(10.8.4)上遇到了以下这个问题,并且自10天以来eclipse JUNO并没有在网上find任何工作。 我已经下载并解压缩了Android NDK。 之后,我在首选项菜单中的“Android”选项中设置了NDK位置。 我想在android ADT上运行一个示例opencv代码( https://www.dropbox.com/s/6s3qwkon9v67u5z/tutorial-3-native.rar )。 在构建时,它提供以下控制台输出 **** Build of configuration Default for project OpenCV Sample – native-activity **** “/ndk-build” Cannot run program “”/ndk-build””: Unknown reason Error: Program “”/ndk-build”” is not found in PATH PATH=[/usr/bin:/bin:/usr/sbin:/sbin] **** Build Finished **** 我对PATHvariables/环境variables一无所知。 请提供一步一步的程序来纠正上述错误。

使用OpenCV进行椭圆检测

我想用OpenCV for Android检测省略号,使用OpenCV 2.4.1包中的Tutorial 2-Basic作为起点。 请注意,我的椭圆将是一个完美的Photoshop。 根据我的理解,使用“HoughCircles”只能find完美(或如此)的圆圈,从而留下椭圆。 任何帮助都会非常感激,因为我是OpenCV的初学者 这是我到目前为止所尝试的 case Sample2NativeCamera.VIEW_MODE_CANNY: (ignore the Canny mode…) capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME); Imgproc.HoughCircles(mGray, mCircles, Imgproc.CV_HOUGH_GRADIENT, 1, 20); Log.d(“Ellipse Points”, ” X ” + mCircles.get(1,1)[0] + mCircles.get(1, 1)[1]); break; 如果您认为任何更多信息可能有用,请告诉我。

Android OpenCV查找最大的方形或矩形

这可能已经得到了回答,但我迫切需要一个答案。 我想在Android中使用OpenCVfind图像中最大的正方形或矩形。 我find的所有解决方案都是C ++,我尝试转换它但它不起作用,我不知道我哪里错了。 private Mat findLargestRectangle(Mat original_image) { Mat imgSource = original_image; Imgproc.cvtColor(imgSource, imgSource, Imgproc.COLOR_BGR2GRAY); Imgproc.Canny(imgSource, imgSource, 100, 100); //I don’t know what to do in here return imgSource; } 我在这里要完成的是创建一个基于原始图像中find的最大正方形的新图像(返回值Mat图像)。 这就是我想要发生的事情: 1 http://img14.imageshack.us/img14/7855/s7zr.jpg 我也可以获得最大广场的四个点,我想我可以从那里拿到它。 但如果我能够返回裁剪后的图像会更好。

如何从openCV android中的Byte 获取Mat对象?

我正在使用Android中的OpenCV库。 我有一个实现PictureCallBack的类。 onPictureTaken()的覆盖方法如下所示, @Override public void onPictureTaken(byte[] data, Camera camera) { Log.i(TAG, “Saving a bitmap to file”); // The camera preview was automatically stopped. Start it again. mCamera.startPreview(); mCamera.setPreviewCallback(this); // Write the image in a file (in jpeg format) try { FileOutputStream fos = new FileOutputStream(mPictureFileName); fos.write(data); fos.close(); } catch (java.io.IOException e) { Log.e(“PictureDemo”, “Exception […]

OpenCV相机定位问题

我有一个简单的项目,只用org.opencv.android.JavaCameraView显示相机。 我的问题是,在默认情况下,相机处于横向模式,我无法更改此原因我需要定义CameraBridgeViewBase而不是常规的相机意图。 这是我的代码的一部分: XML代码: Java代码: CameraBridgeViewBase mOpenCvCameraView; Button VideoButton; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); overridePendingTransition(0, 0); VideoButton = (Button) this.findViewById(R.id.BtnVideo); VideoButton.setOnClickListener(onClickListener); mOpenCvCameraView= (CameraBridgeViewBase) findViewById(R.id.HelloOpenCvView); mOpenCvCameraView.setVisibility(SurfaceView.INVISIBLE); } private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()){ case R.id.BtnVideo: if(mOpenCvCameraView.getVisibility() == SurfaceView.VISIBLE) { mOpenCvCameraView.setVisibility(SurfaceView.INVISIBLE); } else { mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); } […]

将Android Bitmap转换为OpenCV Mat并向后转换

我想简单地将位图从Android转换为OpenCV的Mat对象。 Stack Overflow上经常讨论此主题。 例如: 将Mat转换为Android的Bitmap Opencv ; 使用Android相机捕获图像后将Bitmap转换为Mat ; templateMatching mattoBitmap opencv for android 还有更多要找。 我在这个答案中遵循了这些内容,但我仍然无法以正确的方式完成任务。 最小代码: //First convert Bitmap to Mat Mat ImageMat = new Mat ( image.getHeight(), image.getWidth(), CvType.CV_8U, new Scalar(4)); Bitmap myBitmap32 = image.copy(Bitmap.Config.ARGB_8888, true); Utils.bitmapToMat(myBitmap32, ImageMat); //Do smth. Imgproc.cvtColor(ImageMat, ImageMat, Imgproc.COLOR_RGB2GRAY,4); //Then convert the processed Mat to Bitmap Bitmap resultBitmap = […]

字体识别来自免费手绘

我一直致力于一个涉及基于Android Canvas中用户免费手绘字符的字体识别的应用程序。 在此应用程序中,要求用户以预定义的顺序(A,a,B,c)输入一些预定义的字符。 基于此,有没有办法显示与用户手写相匹配的非常相似的字体。 我已经研究过这个主题,发现了一些论文和文章,但大多数都是从捕获的图像中识别字体。 在这种情况下,他们通过分段,单个字母等来解决很多问题。 但在我的场景中,我知道用户正在绘制什么字母。 我对OpenCV和机器学习有一定的了解。 需要有关如何解决此问题的帮助。

如何在java中使用openCV检查两个图像是否相似?

我必须在使用OpenCV的java中检查两个图像是否相似,我正在使用OpenCV并使用ORB 这是我的主要课程 System.out.println(“Welcome to OpenCV ” + Core.VERSION); System.loadLibrary(Core.NATIVE_LIBRARY_NAME);()); System.out.println(System.getProperty(“user.dir”)); File f1 = new File(System.getProperty(“user.dir”) + “\\test.jpg”); File f2 = new File(System.getProperty(“user.dir”) + “\\test2.jpg”); MatchingDemo2 m = new MatchingDemo2(); m.mth(f1.getAbsolutePath(), f2.getAbsolutePath()); 这是我的MatchingDemo2.java文件 public class MatchingDemo2 { public void mth(String inFile, String templateFile){ FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB); //Create descriptors //first image // generate descriptors //second image […]