我遇到了这个在背景上叠加透明图像的功能。 https://gist.github.com/maximus5684/082f8939edb6aed7ba0a
它在 C++ 中工作得很好。但是在转换回java时。我无法找到与此特定的等效 Java 调用。
双倍不透明度 = ((double)overlay->data[fY * 覆盖->step + fX * 覆盖->channels() + 3])/255;
我正在使用官方 Opencv Java 绑定(bind)版本 3.1 将其转换为 java。 谁能指导我正确的方向?
最佳答案
也不推荐使用 OpenCV C++ API。您有模板Mat::at
相反,它允许您通过引用检索矩阵特定点的值:
double opacity = static_cast<double>(overlay->at<unsigned char>(fy, fx, 3));
由于 Java 没有指针算术,也没有对数组元素的纯引用,因此绑定(bind)提供了 get
和 put
方法重载。如果我没记错的话,你应该尝试这样的事情:
double opacity = overlay.get(fy, fx)[3] / 255.;
src.put(y, x, srcPx * (1. - opacity) + overlayPx * opacity);
关于Java 相当于 opencv c++ Mat->data[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44756670/