我想知道如何将以下C ++代码转换为java。 特别是,我需要将RGB图像转换为对手空间图像,以便在我的AR应用程序中提取匹配的功能。
body {
background-image: url('images/lvl1.jpg');
}
答案 0 :(得分:0)
您可以尝试自己实现此功能,如下所示:
private final static int MAX_UCHAR = 255;
public static int saturateCastUchar(int x) {
return x > MAX_UCHAR ? MAX_UCHAR : (x < 0 ? 0 : x);
}
public static int saturateCastUchar(float x) {
return (int) (x > MAX_UCHAR ? MAX_UCHAR : (x < 0 ? 0 : x));
}
OpenCV for Java不包含任何现成的功能。
答案 1 :(得分:0)
我与我的大四学生进行了一些讨论,我们提出了以下解决方案。
opponentImageChannels.add(new Mat(mReferenceBGRImage.size(), CvType.CV_32FC1));
opponentImageChannels.add(new Mat(mReferenceBGRImage.size(), CvType.CV_32FC1));
opponentImageChannels.add(new Mat(bgrImage.size(), CvType.CV_32FC1));
for (int y = 0; y < bgrImage.rows(); ++y) {
for (int x = 0; x < bgrImage.cols(); ++x) {
double[] data = bgrImage.get(y, x);
double b = data[0];
double g = data[1];
double r = data[2];
opponentImageChannels.get(0).put(y, x, 0.5f * (255 + g + r));
opponentImageChannels.get(1).put(y, x, 0.25 * (510 + r + g - 2 * b));
opponentImageChannels.get(2).put(y, x, 0.5f * 1.0f / 3.0f * (r + g + b));
}
1)使用.add替换.pushback 2)使用.get替换.at 3)使用.put将某些内容放入频道