我只是尝试使用在这个网站上找到的解决方案,在 Android 应用程序中从 OpenCv 访问我的垫子上的数据。
int size = (int) this.getMyMat().total() * this.getMyMat().channels();
double[] buff = new double[size];
this.getMyMat().get(0, 0, buff);
第 3 行使我的应用程序崩溃,我收到此错误:java.lang.UnsupportedOperationException: Mat data type is not compatible: 0
我不知道为什么,这只是这里的副本/过去:OpenCV for Android - Access elements of Mat
这里是 OpenCV 的 get 方法的复制/粘贴:
public int get(int row, int col, double[] data) {
int t = type();
if (data == null || data.length % CvType.channels(t) != 0)
throw new java.lang.UnsupportedOperationException(
"Provided data element number (" +
(data == null ? 0 : data.length) +
") should be multiple of the Mat channels count (" +
CvType.channels(t) + ")");
if (CvType.depth(t) == CvType.CV_64F) {
return nGetD(nativeObj, row, col, data.length, data);
}
throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);
}
忘了准确地说我的 this.getMyMat() 是从以下位置获得的:
Imgproc.adaptiveThreshold(this.getMyGrayMat(), dst, max_BINARY_value, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, threshold_type, 27, 3);
所以这是一个纯黑色和白色的垫子。