Я немного растерялся.
Я только начинаю работать с OpenCV, и на его данные изображения указывается указатель char. Я не могу полностью понять, как это работает с учетом фактических данных, может быть любое количество типов данных, например. uint, float, double. Насколько я знал, указатель должен был быть того же типа, что и указатель, который он представляет.
Возможно, стоит отметить, что openCV является библиотекой C, а мой фон - С++, поэтому я не знаю, как эти проблемы, связанные с использованием типов переменных, решаются в C.
Например, следующий код, взятый из Learning OpenCV, иллюстрирует мое замешательство:
void saturate_sv( IplImage* img ) {
for( int y=0; y<img->height; y++ ) {
uchar* ptr = (uchar*) (
img->imageData + y * img->widthStep
);
for( int x=0; x<img->width; x++ ) {
ptr[3*x+1] = 255;
ptr[3*x+2] = 255;
}
}
}
Итак, это работает, но когда я пытаюсь работать с iplImage типа IPL_DEPTH_64F и использовать ptr [3 * x + 1] = 1 Результаты неверны. Таким образом, чтобы решить мои проблемы: как я могу работать с данными с целыми числами или с плавающей запятой с помощью указателей char и, в частности, как я могу исправить приведенный выше пример для работы с данными двойной точности.
Спасибо