这是由于byte()强制转换而发生的。我在第二种情况下将mat image的数据类型更改为 CV_64FC3 ,以便可以使用double
[]代替byte []来解决此问题。
Mat A = Highgui.imread(image_addr); //"image_addr" is the address of the imageMat C = A.clone();A.convertTo(A, CvType.CV_64FC3); // New line added. int size = (int) (A.total() * A.channels());double[] temp = new double[size]; // use double[] instead of byte[]A.get(0, 0, temp);for (int i = 0; i < size; i++) temp[i] = (temp[i] / 2); // no more casting required.C.put(0, 0, temp);
仅供参考,我也做了一些时间测量,使用第二种方法比使用第一种方法要快得多。



