以下のコードを 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 であり、同じイメージに対して、C++ コードと Java コードで matimg.step と matimg.elemSize() の値が異なります。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;
}
}
どこが間違っているのかわかりませんか?どんな助けでも大歓迎です、ありがとう。