[英]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.