Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 9, 2009 10:37:38

Indalo
От:
Зарегистрирован: 2009-08-09
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

c-type-cast в python

Здравствуйте!

Работаю с библиотекой OpenCV, точнее с её биндингом на питоне.

Есть одна простая функция(получение цвета пикселя), на С++ она выглядит так:

CvScalar getcolor(IplImage *img, int x, int y)
{
// get the pointer to the image buffer
unsigned char *data= reinterpret_cast<unsigned char*>(img->imageData);

int pos = y * img->widthStep + x * img->nChannels;

if(img->nChannels == 3)
return cvScalar(data[pos], data[pos + 1], data[pos + 2]);
else if(img->nChannels == 1)
return cvScalar(data[pos], 0, 0);
}
На питон я её переписал так:

def getcolor(img, x, y):
data = img.imageData
pos = y * img.widthStep + x * img.nChannels
if img.nChannels == 3:
return cvScalar(data[pos], data[pos + 1], data[pos + 2])
elif img.nChannels == 1:
return cvScalar(c_double(data[pos]))
Естественно возникла проблема с типами. т.к. прототип функции cvScalar принимает double, а я передаю фактически str (data является str):

exceptions.NotImplementedError: Wrong number of arguments for overloaded function ‘cvScalar’.
Possible C/C++ prototypes are:
cvScalar(double,double,double,double)
cvScalar(double,double,double)
cvScalar(double,double)
cvScalar(double)
Как правильно конвертнуть типы? Читаю про модуль ctypes, но разобраться пока не получилось.



Офлайн

#2 Авг. 9, 2009 14:57:18

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

c-type-cast в python

ctypes.cast?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version