将cython参数作为未知类型的引用传递 我使用Cython创建Python代码的C++包装器。 cdef函数如下所示 import cv2 cdef public void Load_Cascades(object& face_cascade, object& eye_cascade): face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') print("Cascades loaded!!") cdef public void Run(): face_cascade = None; eye_cascade = None; Load_Cascades(face_cascade, eye_cascade)

将cython参数作为未知类型的引用传递 我使用Cython创建Python代码的C++包装器。 cdef函数如下所示 import cv2 cdef public void Load_Cascades(object& face_cascade, object& eye_cascade): face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') print("Cascades loaded!!") cdef public void Run(): face_cascade = None; eye_cascade = None; Load_Cascades(face_cascade, eye_cascade),python,cython,Python,Cython,参数的类型未知,因此我使用了对象,&将它们作为参考变量传递。调用函数如下所示 import cv2 cdef public void Load_Cascades(object& face_cascade, object& eye_cascade): face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier(

参数的类型未知,因此我使用了
对象
&
将它们作为参考变量传递。调用函数如下所示

import cv2

cdef public void Load_Cascades(object& face_cascade, object& eye_cascade):
  face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
  eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
  print("Cascades loaded!!")
cdef public void Run():
  face_cascade = None;
  eye_cascade = None;
  Load_Cascades(face_cascade, eye_cascade)
有了这样的代码,cython编译器就出现了无法更改引用变量的错误

我还通过传递地址调用了该函数

Load_Cascades(&face_cascade, &eye_cascade)

这也不起作用,您能告诉我如何在cython中通过引用实现未知类型变量的传递吗

由于
对象
使参数成为默认Python参数,因此考虑了Python的易变性。因此,我将所有参数合并到一个
列表中
,默认情况下该列表是可变的,它起作用了

所以代码现在是

import cv2
cdef public void Load_Cascades(cascade):
  cascade.append(cv2.CascadeClassifier('haarcascade_frontalface_default.xml'))
  cascade.append(cv2.CascadeClassifier('haarcascade_eye.xml'))
  print("Cascades loaded!!")
调用函数时,我只传递一个空列表

cdef public void Run():
  cascade = []
  Load_Cascades(cascade)

谢谢David的意见

你不需要<代码>对象基本上是说“将其视为Python”,而Python不是这样工作的。返回要更改的变量。可能有帮助