我目前正在将一些c ++代码翻译成Java,用于Android应用程序.我偶然发现了一些棘手的c ++代码(c ++也不是我的主要语言).下面是c ++代码.此函数计算openCV图像帧中的图像渐变(灰度).
cv::Mat computeMatXGradient(const cv::Mat &mat) {
cv::Mat out(mat.rows,mat.cols,CV_64F);
for (int y = 0; y < mat.rows; ++y) {
const uchar *Mr = mat.ptr<uchar>(y);
double *Or = out.ptr<double>(y);
Or[0] = Mr[1] - Mr[0];
for (int x = 1; x < mat.cols - 1; ++x) {
Or[x] = (Mr[x+1] - Mr[x-1])/2.0;
}
Or[mat.cols-1] = Mr[mat.cols-1] - Mr[mat.cols-2];
}
}
Run Code Online (Sandbox Code Playgroud)
在这个片段中,我不知道如何解释第一个循环中的前两行:
const uchar *Mr = mat.ptr<uchar>(y);
double *Or = out.ptr<double>(y);
Run Code Online (Sandbox Code Playgroud)
这里做了什么,我怎么能把它翻译成Java代码?我查看了'mat.ptr <>()'函数,但这也没有用.(文档可以在这里找到.)关于指针的基本信息(比如这里)我已经读过了,但我仍然没有得到如何阅读上面的行.除了使用的指针,我也不太确定如何处理正在使用的'uchar'类型.这如何转化为Java?
整个代码可以在这里找到. …