java - 将 Mat 转换为 EM 的一维浮点数组?
问题描述
我正在尝试将 Python 代码转换为 Java。但是,我无法找到一种方法来创建样本来训练期望最大化,因为它应该是一个具有 2 个值(来自 HSV 颜色空间的 S 和 V)的单通道矩阵,如下所示:
- 第 0 行:S、V
- 第 1 行:S、V
- 第 2 行:S、V
- 第 3 行:S、V
在 Python 中,我能够做到以下几点:
def convert_to_samples(image, height, width):
samples = []
for y in range(0, height):
for x in range(0, width):
samples.append(image[y, x])
samples = np.float32(np.vstack(samples))
return samples
我尝试了以下但没有成功,因为结果不是 aMat
并且我找不到将其转换回来的方法。
public double[][] convert_to_samples(Mat image) {
double[][] samples = new double[image.height()][];
for(int i = 0; i < image.height(); i++) {
for(int j = 0; j < image.width(); j++) {
samples[i] = image.get(i, j);
}
}
return sortRowWise(samples);
}
private static double[][] sortRowWise(double[][] m) {
for (double[] values : m) Arrays.sort(values);
return m;
}
有人可以帮我改造垫子吗?
解决方案
public Mat convert_to_samples(Mat image) {
double[][] samples = new double[image.height()][];
for(int i = 0; i < image.height(); i++) {
for(int j = 0; j < image.width(); j++) {
samples[i] = image.get(i, j);
}
}
sortRowWise(samples);
Mat matSamples = new Mat(image.height(), 2, CvType.CV_64FC1);
for (int i = 0; i < image.height(); i++) {
matSamples.put(i, 0, samples[i]);
}
return matSamples;
}
private static void sortRowWise(double[][] m) {
for (double[] values : m) Arrays.sort(values);
}
推荐阅读
- javascript - 普通快递抢第一美元金额
- java - 有没有在 Jackcess 中使用通配符/正则表达式的正确方法?
- selenium - 如何处理不存在的 DIV 标签。使用硒和 Python
- c - c 中的 Visual Studio 中的 gtk 需要哪些 .lib 文件?
- django - 蟒蛇 | 如何在具有相同类的模板中显示 2 个模型信息
- javascript - 带有 AJAX 调用的 HTML 范围滑块到 Flask
- virtual-machine - 如何从主机操作系统中的 MQTT 代理中提取数据?
- html - 从下拉列表中选择值时在画外音发音中选择前缀
- r - R中的N+1循环-如何在循环的下一次迭代中使用第一个循环输出
- kubernetes - 从 GCP 快照创建的磁盘不会在 kubernetes 中调整大小