Chức năng có nguồn gốc Tôi muốn sử dụng đòi hỏi phải có một mảng của 7 Mat
s:Vượt qua một mảng của Mats để mã gốc
static int nativeCode(cv::Mat &inputImg, cv::Mat bufImgs[7]);
Trong jni_part
tôi có:
Mat& mRgba = *(Mat*)inRgba;
Mat& bufImgs[7] = *(Mat*)inBufImgs;
nativeCode(mRgba,bufImgs);
Trong Java của tôi mã tôi đang khai báo các trường của tôi:
private Mat mRgba;
private Mat[] bufImgs = new Mat[7];
Tôi có thể gọi getNativeObjAddr
trên mRgba
, nhưng Ho w để tôi làm tương đương cho mảng?
Một số nền:
Tôi đang sử dụng OpenCV, đang xử lý hình ảnh trực tiếp với máy ảnh. Hàm tôi đang gọi trên mỗi khung hình yêu cầu một số đối tượng phụ. Để ngăn chặn việc tạo và phá hủy các đối tượng này mỗi khung hình, tôi muốn tạo chúng một lần và chỉ chuyển qua các tham chiếu trên mỗi lần.
bạn có thể giải thích cú pháp của bạn tại 'GetFieldID (thisclass, "mRgba "," Lorg/opencv/lõi/Mat; ");' và 'GetFieldID (lớp này," bufImgs "," [Lorg/opencv/core/Mat; ");'. 'L' và' ['là gì? Đấu tranh để tìm tài liệu cho việc này. – fredley
@TomMedley Mô tả lớp học trong JNI luôn giống như 'L; '(với dấu gạch chéo thay vì dấu chấm, cũng đừng quên dấu chấm phẩy, đó là một sai lầm phổ biến). Các bộ mô tả mảng trông giống như '[>'. http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/types.html#wp16432 –
Cảm ơn, được đánh giá cao. – fredley