我需要将下面的代码从 C++ 转换为 Java。在 C++ 中,我使用 openCV,我需要使用 JavaCV 将其转换为 Java。
IplImage* img = cvLoadImage(argv[0]);
int rows = img->height;
int cols = img->width;
Mat matimg(img);
vector<vector<double> > img_vec(rows, vector<double>(cols));
for (int i=0; i < rows; i++) {
for (int j =0; j < cols; j++){
unsigned char temp;
temp = ((uchar*) matimg.data + i * matimg.step)[j * matimg.elemSize() + 1 ];
img_vec[i][j] = (double) temp;
}
}
我尝试了以下到 java 的转换,但它不能正常工作。我打印了 temp 的值,它始终为 0,对于同一个图像,matimg.step 和 matimg.elemSize() 的值在 C++ 代码和 Java 代码中是不同的。在 c++ 中,我得到 matimg.step = 2400 和 matimg.elemSize() = 3,而在 Java 中,我得到 3000 和 1。
这是java中的代码:
IplImage img = cvLoadImage(argv[0]);
int rows = img.height();
int cols = img.width();
CvMat matimg = img.asCvMat();
double img_vec[][] = new double[rows][cols];
for (int i=0; i < rows; i++) {
for (int j =0; j < cols; j++){
short temp;
temp = matimg.data_s().get(i * matimg.step() + j * matimg.elemSize() + 1);
img_vec[i][j] = (double) temp;
}
}
我不明白我在哪里做错了?任何帮助表示赞赏,谢谢。