[英]detecting image keypoints --javaCV --EXCEPTION_ACCESS_VIOLATION
I'm java developer .My goal is to detect image keypoints using javaCV 我是Java开发人员。我的目标是使用javaCV检测图像关键点
this is my code : 这是我的代码:
final CvMat image1 = cvLoadImageM("im1.png" , 0);
final CvMat image2 = cvLoadImageM("im2.png", 0);
SIFT sift = new SIFT();
FeatureDetector featureDetector =sift.getFeatureDetector();
KeyPoint keypoint1 = new KeyPoint();
KeyPoint keypoint2 = new KeyPoint() ;
featureDetector.detect(image1, keypoint1 , null);
featureDetector.detect(image2,keypoint2, null);
but when I run this code I got an access violation exception 但是当我运行这段代码时,我遇到了访问冲突异常
A fatal error has been detected by the Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7795e3be, pid=128, tid=2348
JRE version: Java(TM) SE Runtime Environment (7.0_45-b18) (build 1.7.0_45-b18)
Java VM: Java HotSpot(TM) Client VM (24.45-b08 mixed mode, sharing windows-x86 )
Problematic frame:
C [ntdll.dll+0x2e3be]
I can't see where is the problem ? 我看不出问题出在哪里?
I haven`t work with Java CV, but in C++ OpenCV, Keypoint is structure for ONE keypoint, while detector needs to get a vector of keypoints. 我没有使用Java CV,但是在C ++ OpenCV中,关键点是一个关键点的结构,而检测器需要获取关键点的向量。 You have to use analogue of std::vector(used in C++) in Java., eg Array or something similar.
您必须在Java中使用std :: vector(在C ++中使用)的类似物,例如Array或类似的东西。
Your code worked for me; 您的代码对我有用; the only thing I have changed is:
我唯一更改的是:
final CvMat image1 = cvLoadImageM("C:/temp/316.jpg" , 0);
final CvMat image2 = cvLoadImageM("C:/temp/330.jpg", 0);
Check your image path: 检查图像路径:
import com.googlecode.javacv.cpp.opencv_core.CvMat;
import com.googlecode.javacv.cpp.opencv_features2d.FeatureDetector;
import com.googlecode.javacv.cpp.opencv_features2d.KeyPoint;
import com.googlecode.javacv.cpp.opencv_nonfree.SIFT;
import static com.googlecode.javacv.cpp.opencv_highgui.cvLoadImageM;
public class any {
public static void main(String args[])
{
final CvMat image1 = cvLoadImageM("C:/temp/316.jpg" , 0);
final CvMat image2 = cvLoadImageM("C:/temp/330.jpg", 0);
if(image1==null)
System.out.println("image is null");
if(image2==null)
System.out.println("image is null");
SIFT sift = new SIFT();
FeatureDetector featureDetector =sift.getFeatureDetector();
KeyPoint keypoint1 = new KeyPoint();
KeyPoint keypoint2 = new KeyPoint() ;
featureDetector.detect(image1, keypoint1 , null);
featureDetector.detect(image2,keypoint2, null);
System.out.println(keypoint1);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.