簡體   English   中英

將cython參數作為引用傳遞給Unknown類型

[英]Passing cython argument as reference with Unknown type

我正在使用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!!")

參數的類型是未知的,因此我使用了object & ,並將它們作為參考變量傳遞。 調用函數如下

cdef public void Run():
  face_cascade = None;
  eye_cascade = None;
  Load_Cascades(face_cascade, eye_cascade)

使用這樣的代碼,來自cython編譯器的錯誤是無法更改參考變量。

我也通過傳遞地址來調用該函數

Load_Cascades(&face_cascade, &eye_cascade)

這還不能正常工作,請讓我知道如何通過cython中的引用來實現未知類型變量的傳遞

由於object使參數成為默認的Python參數,因此考慮了Python的可變性。 因此,我將所有參數合並到一個默認情況下可變的list中,它起作用了!

所以現在的代碼

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)

謝謝大衛的輸入

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM