yeni OpenCV belgeleri here sadece böyle bir Numpy diziye bir IplImage dönüştürebilirsiniz diyor 't destek matematik:hızlı dönüşüm
yapamam bile olsun o kadarx = arr/0.01
TypeError: unsupported operand type(s) for /: 'cv2.cv.iplimage' and 'float'
veri türünü belirtmek çalışırsanız,:
arr = numpy.asarray(im, dtype=num.float32)
TypeError: float() argument must be a string or a number
Bu yüzden eski belge here'da sağlanan kodu kullanıyorum. Temelde, bu yapar:
arr = numpy.fromstring(im.tostring(), dtype=numpy.float32)
Ama tostring
çağrı veriyi taklit ediyor belki de gerçekten yavaş? Bu dönüşümün gerçekten hızlı olması ve gerekmediği arabellekleri kopyalamamasına ihtiyacım var. Verilerin doğal olarak uyumsuz olduğunu düşünmüyorum; IplImage'ımı ilk etapta cv.fromarray
ile oluşturuyorum, bu da son derece hızlı ve OpenCV fonksiyonları tarafından kabul edildi.
Yeni asarray
yönteminin benim için çalışmasını sağlamanın bir yolu var mı, yoksa numpy.fromstring
'un kabul edeceği şekilde IplImage'daki veri işaretçisine doğrudan erişebilir miyim? Ubuntu Precise için önceden paketlenmiş OpenCV 2.3.1 kullanıyorum.
OpenCV, Python bağlamaları da çok gelişmiştir. Önce OpenCV 2.4.2 veya 2.4.3rc'yi denemelisiniz. – ypnos
Soru geçerli. Zaten OpenCV 'cv' bindgins için bazı eski Python kodu var. Onlar hala OpenCV 2.4.2'den desteklenmektedir. Bunları "cv2" ye dönüştürmek her zaman bir seçenek olmayabilir. – sastanin