Не путайте official OpenCV Java binding с документами here и проектом JavaCV, у которого нет документации.
Если вы используете JavaCV
, вам не нужно конвертировать IplImage
для того, чтобы использовать HOGDescriptor
, как вы можете видеть в JavaCV
source, то HOGDescriptor
объект обертка манипулирует CvArr
объекты:
// javacv/cpp/opencv_objdetect.java:527
public static class HOGDescriptor extends Pointer {
public HOGDescriptor();
...
public native void setSVMDetector(CvArr _svmdetector);
...
public native void compute(CvArr img, FloatPointer descriptors, CvSize winStride, CvSize padding, CvPoint locations);
public native void detect(CvArr img, CvPoint foundLocations, DoublePointer weights, double hitThreshold, CvSize winStride, CvSize padding, CvPoint searchLocations);
public native void detect(CvArr img, CvPoint foundLocations, double hitThreshold, CvSize winStride, CvSize padding, CvPoint searchLocations);
public native void detectMultiScale(CvArr img, CvRect foundLocations, double hitThreshold, CvSize winStride, CvSize padding, double scale, int groupThreshold);
public native void detectMultiScale(CvArr img, CvRect foundLocations, DoublePointer foundWeights, double hitThreshold, CvSize winStride, CvSize padding, double scale, double finalThreshold, boolean useMeanshiftGrouping);
public native void detectMultiScale(CvArr img, CvRect foundLocations, double hitThreshold, CvSize winStride, CvSize padding, double scale, double finalThreshold, boolean useMeanshiftGrouping);
...
};
Теперь, как вы можете видеть в opencv_core.java
, объект IplImage
обертка простирается CvArr
:
// javacv/cpp/opencv_core.java:410
public static class IplImage extends CvArr {
...
};
Таким образом, вам не нужно делать никаких преобразований.
Вот пример использования HOGDescriptor.detectMultiScale
:
IplImage img = cvLoadImage("image.jpg");
CvRect foundRects = new CvRect(null);
HOGDescriptor hog = new HOGDescriptor();
FloatPointer svm = HOGDescriptor.getDefaultPeopleDetector();
hog.setSVMDetector(svm);
hog.detectMultiScale(img, foundRects, 0, cvSize(8,8), cvSize(32,32), 1.05, 2);
конвертировать IplImage в BufferedImage, то я думаю, что API позволит сделать изображение из Мат – anshulkatta
Спасибо большое! – user2389417