OpenCV에서 매트를 정수 배열로 변환하는 방법에 대한 제안. http://answers.opencv.org/question/33596/convert-mat-to-byte-in-c/ 에서 제안 사항 중 하나를 시도했지만 다음과 같은 오류가 발생합니다. "java.lang.UnsupportedOperationException : 매트 데이터 형식이 호환되지 않습니다 : 24" 여기에 잘못된 것이 있다면 알려주십시오. 여기 아래에있는 내 코드입니다 :매트를 OpenCV Java의 Interger 배열로 변환하는 방법은 무엇입니까?
public void onCameraViewStarted(int width, int height) {
mRgba = new Mat(width, height, CvType.CV_32SC4);
mYuv = new Mat(width,height,CvType.CV_8SC4);
}
public void onCameraViewStopped() {
mRgba.release();
mYuv.release();
}
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
Imgproc.cvtColor(mRgba,mYuv,Imgproc.COLOR_RGBA2YUV_IYUV);
int[] rgba = new int[(int)(mRgba.total()*mRgba.channels())];
mRgba.get(0,0,rgba);
byte[] yuv = new byte[(int)(mYuv.total()*mYuv.channels())];
mYuv.get(0,0,yuv);
FindFeatures(mRgba.width(),mRgba.height(),yuv,rgba);
return mRgba;
}
그리고 나는이 코드 조각을 사용하여 변환하려고하면
MatOfInt r = new MatOfInt();
mRgba.assignTo(r);
int[] rgba = r.toArray();
MatOfByte y = new MatOfByte();
mYuv.assignTo(y);
byte[] yuv = y.toArray();
이 오류를 얻을 : "java.lang.RuntimeException가이 : 기본 매트 예기치 않은 유형이 또는 크기 : 매트 [480 * 640 * CV_8UC4, isCont = 사실, isSubmat는 nativeObj = 0x7ffc35926ca0, dataAddr =이 0x7ffc35a09010 거짓 =] "