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