bende kod ctypes dize (veya tuple) dönüştürmek:verimli bir C işlevi geçmek için dizi bir PIL görüntü alır ve bir ctypes diziye dönüştürür
w_px, h_px = img.size
pixels = struct.unpack('%dI'%(w_px*h_px), img.convert('RGBA').tostring())
pixels_array = (ctypes.c_int * len(pixels))(*pixels)
Ama uğraşıyorum büyük resimlerle ve bu birçok öğeyi işlev argümanlarına açarak fark edilir derecede yavaş görünüyor. Makul bir hızlanma elde etmek için yapabileceğim en basit şey nedir?
Yalnızca bir ara adım olarak bir tuple dönüştürüyorum, bu yüzden gereksiz ise, daha iyisi.
var yapın: @Mu Zihin yorumunda işaret ettiği gibi, son fragman yararlı
clib
ortaya çıkarmak için platforma bağımlı gitmeye gerek kalmadan ctypes.memmove kullanmak basitleştirilmiş olabilir Ayrıca bir string ile kullanabileceğiniz (ctypes.c_int * n) .from_buffer'. Hala PIL 'Image'ı bir dizeye dönüştürme adımı olmadan kullanmayı nasıl kullanmaya çalışıyorum. – Kos