Python ve C'yi karıştırma konusunda bir OpenCV projem var. OpenCV 2.1'e geçtikten sonra, C kod çağrıları artık çalışmıyor, çünkü OpenCV artık SWIG bağlamalarını kullanmıyor .SWIG Python bağlama, OpenCV 2.1 ile çalışmayan yerel koda bağlanır.
Python itibaren, aşağıdaki prototip ile C işlevi çağırmak için kullanıldı: Şimdi
int fast_support_transform(CvMat * I, CvMat * N,...);
, aşağıdaki hatayı alıyorum: C kodu bir kütüphaneden olduğunu
TypeError: in method 'fast_support_transform', argument 1 of type 'CvMat *'
oluşturulan Bana göre Python arabirimini üretmek için SWIG kullanır. Emin değilim, ama sanırım OpenCV şimdi klişeleri kullanıyor ve bu kod yerel koduma bir CvMat işaretçisi gönderemiyor.
Bu sorunun hızlı bir şekilde düzeltildiğini biliyor musunuz? Herhangi bir ipucu kabul edilir.
UPDATE10: Ziyaretçiler, bu sorunun güncel olduğunu unutmayın. OpenCV'de Python desteği artık çok olgun. CvMat
şimdi varsayılan olarak bir Numpy dizisi olarak temsil ediliyor.
"cvMat" öğesini "cvArr" değerine dönüştürmeyi ve sonra argüman olarak cvArr * 'ı kullanmayı deneyin. cvMat, cvArr'dan türetilmiştir. Yani, cvArr işaretçisini aldıktan sonra, onunu cvMat'a geri dönüştürebilir ve kullanabilirsin. Veya diğer seçenek OpenCV'nin son çalışma sürümüne geri dönmek olacaktır. – askmish