标签: javacv

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

我想知道如何使用JavaCV在OpenCV中构造以下C++语句:

float* p = (float*)cvGetSeqElem(circles, i);
int radius = cvRound(p[2]);
Run Code Online (Sandbox Code Playgroud)

使用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, 0);
    Point p = new Point((int)point.x(), (int)point.y());
    points.add(p);
}
Run Code Online (Sandbox Code Playgroud)

java opencv javacv

6
推荐指数
1
解决办法
2931
查看次数

cvHaarDetectObjects()方法有什么作用?

有些专家可以解释一下我是否可以使用cvHaarDetectObjects()方法来检测方块并获得宽度和高度?我找到了一个使用这种方法进行面部检测的代码,但我需要知道是否可以将它用于矩形检测.

    String src="src/squiredetection/MY.JPG";
    IplImage grabbedImage = cvLoadImage(src);
    IplImage grayImage    = IplImage.create(grabbedImage.width(),  grabbedImage.height(), IPL_DEPTH_8U, 1);

        cvCvtColor(grabbedImage, grayImage, CV_BGR2GRAY);

        CvSeq faces = cvHaarDetectObjects(grayImage, cascade, storage, 1.1, 3, 0);//*
        for (int i = 0; i < faces.total(); i++) {
            CvRect r = new CvRect(cvGetSeqElem(faces, i));
            cvRectangle(grabbedImage, cvPoint(r.x(), r.y()), cvPoint(r.x()+r.width(), r.y()+r.height()), CvScalar.RED, 1, CV_AA, 0);
         /*   hatPoints[0].x = r.x-r.width/10;    hatPoints[0].y = r.y-r.height/10;
            hatPoints[1].x = r.x+r.width*11/10; hatPoints[1].y = r.y-r.height/10;
            hatPoints[2].x = r.x+r.width/2;     hatPoints[2].y = r.y-r.height/2;*/
          //  cvFillConvexPoly(grabbedImage, hatPoints, hatPoints.length, CvScalar.GREEN, CV_AA, 0);
        } …
Run Code Online (Sandbox Code Playgroud)

java opencv image-processing javacv

6
推荐指数
1
解决办法
6532
查看次数

如何在JavaCV中获取区域的大小

在我的项目中,我希望从特定颜色的最大均匀区域获得大小(在我的示例中,它是蓝天).

我的第一个想法是转换原始图像:

原始图像

到二进制图像,检测天空颜色并使用此区域创建一个遮罩: 面具图像

但是如何获得这些白色像素的大小和位置?我想要一种有效的方法,如果图片在图片的上1/3处有蓝天,则表示正确.有任何想法吗?我应该创建一个"全局掩码"(参见注释中的图像3)并将其与二进制图片进行比较吗?或者有更简单的方法吗?

谢谢.

opencv image-processing javacv

6
推荐指数
1
解决办法
1466
查看次数

使用OpenCV Java Bindings读取图像

我正在使用新的OpenCV Java绑定来读取图像并对图像进行一些处理.我正在尝试使用Java绑定将C代码转换为Java,但似乎无法找到相关的方法:

C代码:

cv::Mat img = cv::imread(argv[1]);
cv::Mat gray;
cv::cvtColor(img, gray, CV_BGR2GRAY);
int erosion_size = 5;
cv::Mat element = cv::getStructuringElement(cv::MORPH_CROSS,
                                       cv::Size(2 * erosion_size + 1, 2 * erosion_size + 1),
                                       cv::Point(erosion_size, erosion_size) );
cv::erode(gray, gray, element);
Run Code Online (Sandbox Code Playgroud)

我找不到:

  • imread
  • cvtcolor
  • getStructuringElement
  • erode

我在这里看了看api:http://docs.opencv.org/java/

不幸的是,提供示例Java代码甚至没有显示如何读取图像!

java opencv image-processing javacv

6
推荐指数
2
解决办法
2万
查看次数

如何获取视频捕获对象的每秒帧数/帧数

我正在使用 videocapture 对象来捕获和处理 opencv/javacv 中的视频帧。我不知道如何获得帧速率。我想要一个在实时视频捕获期间在后台运行的计时器。它应该在检测到人脸时暂停并稍后继续。由于 haarcascade 文件的处理,每个 rame 需要很多时间来处理。如何调整帧率。

   System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
   VideoCapture camera = new VideoCapture(0);
Run Code Online (Sandbox Code Playgroud)

java opencv timer javacv

6
推荐指数
1
解决办法
5714
查看次数

使用WebCam检测HeartBeat?

我正在尝试创建一个可以使用您的计算机网络摄像头检测心跳的应用程序.我从2周开始编写代码并开发了这段代码,到目前为止我已经完成了

它是如何工作的?如下图所示......

  1. 使用opencv检测面部
  2. 获得额头的图像
  3. 应用滤镜将其转换为灰度图像[可以跳过]
  4. 找到每帧绿色像素的平均强度
  5. 将平均值保存到数组中
  6. 应用FFT(我使用了最小的库)从FFT谱中提取心跳(这里,我需要一些帮助)

在这里,我需要帮助从FFT频谱中提取心跳.谁能帮我.在这里,是在python中开发的类似应用程序,但我无法解释这个代码,所以我在开发过程中开发相同.任何人都可以帮助我低估这个python代码中提取心跳的部分.

//---------import required ilbrary -----------
import gab.opencv.*;
import processing.video.*;
import java.awt.*;
import java.util.*;
import ddf.minim.analysis.*;
import ddf.minim.*;
//----------create objects---------------------------------
Capture video; // camera object
OpenCV opencv; // opencv object
Minim       minim;
FFT         fft;
//IIRFilter filt;
//--------- Create ArrayList--------------------------------
ArrayList<Float> poop = new ArrayList(); 
float[] sample;
int bufferSize = 128;
int sampleRate = 512;
int bandWidth = 20;
int centerFreq = 80;
//---------------------------------------------------
void setup() {
  size(640, 480); // size of …
Run Code Online (Sandbox Code Playgroud)

processing image-processing heartbeat javacv

6
推荐指数
1
解决办法
1996
查看次数

警告:发生了非法反射访问操作(java 中的便携式 opencv)

我想制作一个便携式opencv应用程序,将依赖项添加到 maven 文件中pom.xml

简化的代码是:

import org.opencv.core.Mat;

public class Builder {

    public static void main(String[] args) {

        nu.pattern.OpenCV.loadShared();
        System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);

        Mat mat = new Mat(4,3,1);
        System.out.println(mat.dump());
    }
}
Run Code Online (Sandbox Code Playgroud)

我将此添加到pom.xml

<dependency>
      <groupId>org.openpnp</groupId>
      <artifactId>opencv</artifactId>
      <version>3.2.0-0</version>
      <scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

它适用于 java 9 的以下警告:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by nu.pattern.OpenCV$SharedLoader (file:/home/martin/.m2/repository/org/openpnp/opencv/3.2.0-0/opencv-3.2.0-0.jar) to field java.lang.ClassLoader.usr_paths
WARNING: Please consider reporting this to the maintainers of nu.pattern.OpenCV$SharedLoader
WARNING: Use --illegal-access=warn to enable warnings of further …
Run Code Online (Sandbox Code Playgroud)

java opencv maven javacv java-9

6
推荐指数
1
解决办法
2万
查看次数

哪个 Java API 与 JavaCV 一起使用?org.bytedeco.opencv.opencv_core 还是 org.opencv.core?

我正在 Java 中使用 OpenCV(实际上是在 Scala 中)。我正在使用 org.bytedeco 包装器(opencpp 和 javacv),但文档不是很好。

问题是,根据示例,使用两个不同的 API:org.bytedeco.opencv.opencv_coreorg.opencv.core

org.bytedeco.opencv.opencv_core工作正常,但org.opencv.core抛出 java.lang.UnsatisfiedLinkError:

An exception or error caused a run to abort: no opencv_java410 in java.library.path 
java.lang.UnsatisfiedLinkError: no opencv_java410 in java.library.path
Run Code Online (Sandbox Code Playgroud)

我完全迷失了:

  1. 为什么有两个不同的 api?
  2. 该使用哪一个呢?
  3. 为什么org.bytedeco.opencv.opencv_core工作时org.opencv.core会抛出异常?

提前致谢。

使用的库: "org.bytedeco" % "javacv-platform" % "1.5.1" 为所有平台导入 lib。

java opencv javacv

6
推荐指数
1
解决办法
2497
查看次数

使用Javacv代码在Nvidia Tegra 2芯片组(Android Samsung Tab)上崩溃的System.LoadLibrary(libname)

我使用Javacv代码在Andorid中制作了一个自定义相机.我没有包含所有.so文件,只包括我的应用程序所需的文件.如下面的屏幕截图:

在此输入图像描述

它适用于Samsumg Galaxy S2,S3和索尼爱立信Xperia Arc.没问题.但是,当我试图在三星P7500 Galaxy Tab 10.1上运行它时,它崩溃了我使用的第一行Javacv代码,恰好是:

yuvIplImage = IplImage.create(previewWidth, previewHeight,  IPL_DEPTH_8U, 2);
Run Code Online (Sandbox Code Playgroud)

此尝试的Logcat输出:

07-08 13:30:13.930: I/ActivityManager(192): START {intent.toShortString} from pid 7836
07-08 13:30:14.000: I/ActivityManager(192): Start proc app.processName for activity hostingNameStr: pid=7847 uid=10001 gids={1006, 3003, 1015, 1023}
07-08 13:30:14.190: D/NvOsDebugPrintf(116): GetParameter(): 37 not supported
07-08 13:30:14.190: E/NvOmxCameraSettingsParser(116): Param type 71 not supported
07-08 13:30:14.240: W/dalvikvm(7847): VFY: unable to resolve virtual method 18783: Ljava/awt/image/BufferedImage;.getSampleModel ()Ljava/awt/image/SampleModel;
07-08 13:30:14.250: D/dalvikvm(7847): VFY: replacing opcode 0x22 at 0x0007
07-08 13:30:14.250: W/dalvikvm(7847): VFY: …
Run Code Online (Sandbox Code Playgroud)

android opencv galaxy-tab tegra javacv

5
推荐指数
1
解决办法
1166
查看次数

如何将IplImage转换为lept.PIX

我开发了基于JavaCV的OCR系统.

我为我的项目使用以下库:

在一个案例中,我需要找到图像的某些部分并识别其上的字母.

我以IplImage类型存储图像的一部分.

但对于Tesseract,我必须使用PIX格式.

如何将IplImage转换为Pix?

ocr tesseract javacv

5
推荐指数
1
解决办法
395
查看次数