1

这是我的python脚本:

import cv2
import numpy as np
import copy
import imutils
def test(red,green,blue):
  mask = np.zeros((480,360,3),dtype=np.uint8)
  for i in range(0,360):
      for j in range(0,480):
           a=blue[i][j]
           b=green[i][j]
           c=red[i][j]
           mask[j,i]=(110,23,245);
  mask[0:480,0:360]=(110,23,245)
  cv2.rectangle(mask, (100,100), (200,200), (255, 255, 255), -1)
  b, g, r = cv2.split(mask)
  return b,g,r

现在在 android 的 mainactivity.java 中,它是通过创建一个 pyObject 来接收的,但是 python 函数返回 3 ,2 维数组作为元组,我需要将此 pyObject 转换为 3 ,2 维 java 数组

Python py=Python.getInstance();
PyObject pyf =py.getModule("hello");
PyObject obj=pyf.callAttr("test", red,green,blue);
int[][] data = pyf.callAttr("test", red,green,blue).toJava(int[][].class);

但是正如您所看到的,如果我的 python 函数返回 1 ,2d 列表,我可以将其转换为 java 2d 数组,但是当它返回 3, 2d 数组时该怎么办?

4

1 回答 1

0

您可以向 Java 数据类型添加另一个维度:

int[][][] data = pyf.callAttr("test", red,green,blue).toJava(int[][][].class);

现在data[0]bdata[1]gdata[2]r

于 2020-07-18T10:39:14.993 回答