首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用chaquopy调用python函数的TypeError

使用chaquopy调用python函数的TypeError
EN

Stack Overflow用户
提问于 2020-11-19 11:00:26
回答 1查看 460关注 0票数 0

我有一个python文件,其中包含许多'def‘值。当我试图将python文件与android集成时,我会得到一个类型错误。输入是一个图像文件,我希望lowerRange和upperRange基于该图像,所以我不能为它们定义一个值,因为图像大小每次都会变化。

代码语言:javascript
复制
import numpy as np
import cv2
import os
import matplotlib.pyplot as plt
from PIL import Image


def host(croppedImage,lowerRange, upperRange):
    mask_yellow = cv2.inRange(croppedImage,lowerRange,upperRange)
    dilatation_type = cv2.MORPH_RECT
    dilatation_size = 1
    element = cv2.getStructuringElement(dilatation_type, (dilatation_size + 2, dilatation_size+2), (dilatation_size, dilatation_size))
    dilated_mask_image = cv2.dilate(mask_yellow, element)
    return dilated_mask_image

def DrawContourRect(contour):
    rect = cv2.minAreaRect(contour)
    return cv2.boxPoints(rect)

-----------------------------This is just a part of code---------------------------------

这是python对象的xml代码:

代码语言:javascript
复制
PyObject pyo = py.getModule("file");
PyObject obj = pyo.callAttr("host", imageString);

错误是:

代码语言:javascript
复制
com.chaquo.python.PyException: TypeError: detect() missing 2 required positional arguments: 'lowerRange' and 'upperRange'
at <python>.chaquopy_java.call(chaquopy_java.pyx:285)
at <python>.chaquopy_java.Java_com_chaquo_python_PyObject_callAttrThrows(chaquopy_java.pyx:257)

有没有解决这个问题的方法,以及如何读取每个“def”值(主机和DrawContourRect )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-19 14:49:14

错误消息和代码似乎不匹配,但我假设hostdetect要么是相同的函数,要么具有相同的签名。

如果这是正确的,那么问题只是将一个参数传递给一个需要3的函数。如果您希望lowerRange和upperRange是基于图像的,那么您将不得不这样做:

  • 端计算它们,并使用两个额外的参数将它们传递给

;或

  • 从函数中移除两个额外的参数,并计算Python侧的范围。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64910312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档