Tag: opencv

如何在IntelliJ IDEA 12中使用OpenCV

我正在尝试使用IntelliJ IDEA 12来开发Java中的OpenCV 2.4.5应用程序。 我从网站上按照Eclipse的说明进行操作。 我遇到的问题是我可以将jar添加到我的库但我不知道如何将本机添加到我的类路径。

如何使用javacv识别长度和宽度可变的方形或矩形?

我正在使用java开发项目来识别使用opencv包的组件,但我是javacv的新手,我只是想知道如何识别特定源图像中的矩形,请一些经验人员给出一些基本的指导来存档这个任务。 我尝试在这里使用模板匹配,但它只能识别确切大小的矩形。 但在我的情况下,我需要识别变长矩形? import java.util.Arrays; import static com.googlecode.javacv.cpp.opencv_core.*; import static com.googlecode.javacv.cpp.opencv_imgproc.*; import static com.googlecode.javacv.cpp.opencv_highgui.*; public class TestingTemplate { public static void main(String[] args) { //Original Image IplImage src = cvLoadImage(“src\\lena.jpg”,0); //Template Image IplImage tmp = cvLoadImage(“src\\those_eyes.jpg”,0); //The Correlation Image Result IplImage result = cvCreateImage(cvSize(src.width()-tmp.width()+1, src.height()-tmp.height()+1), IPL_DEPTH_32F, 1); //Init our new Image cvZero(result); cvMatchTemplate(src, tmp, result, […]

在不同视角的图像中找到射箭目标

我正试图找到一种方法来识别射箭目标和照片上的所有环,这些环可能由不同的视角组成: 我的目标是确定目标,然后在箭头击中目标的位置自动计算其得分。 推定如下: 相机的位置不固定,可能会改变 射箭目标也可能会轻微移动或旋转 目标可能具有不同的大小并且具有不同的圆圈数量 目标中可能有许多洞(有时是大划痕) 我已经尝试过使用OpenCV来查找轮廓,但即使使用预处理(灰度 – >模糊( – >阈值) – >边缘检测),我仍然会发现一些houndred轮廓,它们都被箭头或其他障碍物(孔)分散注意力。目标,所以不可能找到一个漂亮的圆形线。 使用霍夫找到圆圈也不起作用,因为它会给我我的结果,因为霍夫只能找到完美的圆而不是椭圆。 通过预处理图像,这是我迄今为止的最佳结果: 我正在考虑椭圆和圆拟合,但由于我不知道目标的半径,位置和姿势,这可能是一个非常麻烦的任务。 另一个想法是关于使用模板识别,但目标的位置和旋转经常变化。 现在我有想法跟随图像上的每一行来检查它是否是一条曲线然后猜测哪些曲线属于一起形成一个圆/椭圆(椭圆因为透视)。 问题是线条可能在短距离内被箭头或孔相交,因此线条太短而无法检查它是否是曲线。 如果目标上的圆圈较小,则根本无法识别它的机会很高。 此外,如您所见,圆圈8,7和6在左侧没有清晰的线条。 我认为只要能够清楚地识别目标中的所有环,就不需要进行透视校正来完成这项任务。 我google了很长时间,发现一些论文都没有完全专注于这个特定的任务,也太过数学让我无法理解。 是否有可能实现这一任务? 你能和我分享一个如何解决这个问题的想法吗? 任何事情都非常感激。 我在Java中这样做,但编程语言是次要的。 如果您需要更多详细信息,请与我们联系。

OpenCV + Java = UnsatisfiedLinkError

我需要从我的USB网络摄像头捕获video流,为此我使用Opencv 2.4.6进行Java开发。 我按照这里列出的步骤操作 我将“C:\ opencv \ build \ java \ x64”目录添加到我的系统路径中,并将“opencv-246.jar”文件包含在我的ECLIPSE库中。 当你运行解释时 import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; public class Main { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat m = Mat.eye(3, 3, CvType.CV_8UC1); System.out.println(“m = ” + m.dump()); } } 我明白了 m = [1, 0, 0; 0, 1, 0; 0, 0, 1] 好的=) […]

如何在jar中打包opencv + java

我一直在使用Opencv 2.4.5和Java构建一个应用程序,现在想分发应用程序。 使用以下内容加载库: static{ System.loadLibrary(“opencv_java245”); } 哪个工作正常。 但是,在导出时,从jar运行时它不起作用: java -jar build1.jar opencv_java245.jar文件作为用户库包含在内,并连接了本机文件(libopencv_java245.dylib)。 当运行从Eclipse生成的可执行jar时,我得到下面的UnsatisfiedLinkError,尽管在eclipse中编译/运行正常。 Exception in thread “main” java.lang.UnsatisfiedLinkError: no opencv_java245 in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at com.drawbridge.Main.(Main.java:12) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:266) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56) 有人知道在jar子里打包OpenCV的简单方法吗? 更新:我现在已经筋疲力尽了。 我可以将库添加到我的构建路径(而不是使用System.loadLibrary),这可以在eclipse中工作,但不能在jar中打包。 我已经尝试了一切。 我还检查了我正在尝试加载的动态库的类型 – 它是 Mach-O 64-bit x86_64 dynamically linked shared library 这似乎应该工作正常。 我用-D64和-D32来测试并得到两者相同的结果。

OpenCV过滤ORB匹配

我使用ORBfunction检测器使用此代码查找两个图像之间的匹配: FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB); DescriptorExtractor descriptor = DescriptorExtractor.create(DescriptorExtractor.ORB);; DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING); // First photo Imgproc.cvtColor(img1, img1, Imgproc.COLOR_RGB2GRAY); Mat descriptors1 = new Mat(); MatOfKeyPoint keypoints1 = new MatOfKeyPoint(); detector.detect(img1, keypoints1); descriptor.compute(img1, keypoints1, descriptors1); // Second photo Imgproc.cvtColor(img2, img2, Imgproc.COLOR_RGB2GRAY); Mat descriptors2 = new Mat(); MatOfKeyPoint keypoints2 = new MatOfKeyPoint(); detector.detect(img2, keypoints2); descriptor.compute(img2, keypoints2, descriptors2); […]

opencv Java build中imshow的等效方法

对不起,如果我问一个愚蠢的问题,我正在尝试使用Java构建学习openCV。 在opencv示例中,我发现在c ++中有方法imshow或在python中有showImage,但我在opencv Java API中搜索,我找不到imshow方法。 在使用Java构建的opencv中,imshow()和waitKey()的等价方法是什么?

Windows 7中的Javacv UnsatisfiedLinkError

在我的项目中,我想从我的网络摄像头捕获图像。 我按照“OpenCV-JavaCV:eclipse项目配置windows 7”博客文章中的说明逐步配置 。 配置完成后,我测试了样本代码,应用程序找到了我的网络摄像头 设置:设置设备0 设置:Namuga 1.3M网络摄像头 设置:无法使用SmartTee找到预览引脚 设置:捕获回调集 设置:设备已设置并准备捕获。 然后我得到一个错误,即.dll错误。 我使用的是Windows 7 x64。 Exception in thread “Thread-2” java.lang.UnsatisfiedLinkError: C:\Users\Administrator\AppData\Local\Temp\javacpp153028723186\jniopencv_core.dll: Can’t find dependent libraries at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(Unknown Source) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:418) at com.googlecode.javacpp.Loader.load(Loader.java:368) at com.googlecode.javacpp.Loader.load(Loader.java:315) at com.googlecode.javacv.cpp.opencv_core.(opencv_core.java:131) at java.lang.Class.forName0(Native Method) at […]

java中的OpenCV Mat对象序列化

我试图序列化对的映射并获得如下exception: java.io.NotSerializableException: org.opencv.core.Mat 有什么方法可以序列化吗?

OpenCV 3.0.0 FaceDetect示例失败

我试图让OpenCV运行我正在使用以下示例代码 我显示以下错误行: OpenCV Error: Assertion failed (!empty()) in cv::CascadeClassifier::detectMultiScale, file ..\..\..\..\opencv\modules\objdetect\src\cascadedetect.cpp, line 1580 Exception in thread “main” CvException [org.opencv.core.CvException: cv::Exception: ..\..\..\..\opencv\modules\objdetect\src\cascadedetect.cpp:1580: error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale ] at org.opencv.objdetect.CascadeClassifier.detectMultiScale_1(Native Method) at org.opencv.objdetect.CascadeClassifier.detectMultiScale(CascadeClassifier.java:176) at org.maxbit.opencv.samples.DetectFaceDemo.run(SampleB.java:29) at org.maxbit.opencv.samples.SampleB.main(SampleB.java:51) 任何机构都能告诉我这个错误意味着什么或如何调试它?