如何转换此C ++ opencv代码。 (此代码来自opencv中的camshift跟踪演示https://github.com/Itseez/opencv/blob/master/samples/cpp/camshiftdemo.cpp)
Mat roi(hue,selection), maskroi(mask,selection);
进入javacv代码?
答案 0 :(得分:0)
neweast javacpp预设javacpp-presets-0.9已经hava整个opencv javacv版本实现。检查您需要的功能是否可用。 https://github.com/bytedeco/javacpp-presets/tree/master/opencv
如果没有,我认为您需要看到两个c ++函数roi()和maskroi()的定义(实现),以便将自己的行代码转换为javacv。
而且,javacpp的谷歌小组也是一个最好的地方,问你是否有与javacpp相关的问题。 http://groups.google.com/group/javacpp-project
注意:
对于c ++输出参数类型(通过指针调用或通过引用调用),您需要了解java函数参数没有输出类型,因此您需要使用数组作为变通方法,例如:
C ++代码:
void detectBothEars(Mat input, Rect* left, Rect* right);
javacv counterpat应该是:
void detectBothEarsRect(Mat input, Rect[] left, Rect[] right);
客户端代码是:
Rect[] leftRect = new Rect[1];
Rect[] rightRect = new Rect[1];
detectBothEars(face, leftRect , rightRect);
答案 1 :(得分:0)
Java提供了相同的构造函数:public Mat(Mat m, Rect roi)
所以,我们基本上可以做同样的事情:
Mat roi = new Mat(hue, selection), maskroi = new Mat(mask, selection);