我做了这个,但得到了奇怪的答案。不知道为什么会这样?同样的方式我使用CvMat读取而不转换为此。然后我得到了不同的答案。
CvMat kernel=CvMat.create(3,3,CV_32F);
kernel.put(1,1,5);
kernel.put(0,1,-1);
kernel.put(2,1,-1);
kernel.put(1,0,-1);
kernel.put(1,2,-1);
kernel.put(0,0,0);
kernel.put(2,2,0);
kernel.put(0,2,0);
kernel.put(2,0,0);
IplImage buffer1=kernel.asIplImage();
ByteBuffer buffer =buffer1.getByteBuffer();
int cols=buffer1.width();
int rows=buffer1.height();
double img_vec[][] = new double[rows][cols];
System.out.println("rows:"+rows+" coloums:"+cols);
for (int i=0; i < rows; i++) {
for (int j =0; j < cols; j++){
int ind = i * buffer1.widthStep() + j * buffer1.nChannels() + 1;
img_vec[i][j] = (buffer.get(ind) & 0xFF);
System.out.println(img_vec[i][j]);
}
}