2015-07-29 2 views
1

Я хочу установить значение пикселя в данном изображении bmp с помощью CvSet2D, но хочу получить только первое значение. Не могли бы вы объяснить, для чего нужны 4 аргумента CvSet2D?использовать cvSet2D в сером изображении на языке C?

Например:

#include <stdio.h> 
#include <cv.h> 
#include <highgui.h> 
#include <math.h> 

int main(int argc, char *argv[]) 
{ 
    IplImage* img = cvLoadImage("initial.bmp",1); 

    int f = 123; 
    cvSet2D(img, 1, 2, f); // here is the error 
    //cvSet2D(img, 1, 2, cvScalar(f)); // error also this way 

    return 0; 
} 

Я получаю сообщение об ошибке, которая говорит:

incompatible type for argument 4 of 'cvSet2D' 

мне просто нужно установить значение пикселя серого масштаба изображения, как жулик я это сделать?

ответ

1

Вы можете обратиться к вопросу this.

C: пустота cvSet2D (CvArr * обр, внутр idx0, внутр idx1, значение CvScalar)

Аргументы:

  • обр - Входной массив (т.е. изображение)
  • idx0 - Первый нулевой компонент индекса элемента (то есть строка)
  • idx1 - второй нулевой компонент на основе индекса элемента (т.е. столбец)
  • значение - Назначенное значение

Чтобы знать, что cvScalar есть, обратитесь к this и

cvScalar - просто удобный контейнер для 1, 2, 3 или 4 значений с плавающей запятой.

Вы должны сделать что-то вроде:

uchar f = 123; 
CvScalar scalar = cvGet2D(img, 1, 2); 
scalar.val[0] = f; 
cvSet2D(img, 1, 2, scalar); 
+0

этого cvSet2D (IMG, 1, 2, cvScalar (е)); не работает вообще –

+0

@RiwaMl он должен работать, какая ошибка? Также разместите небольшой образец, где вы также покажете, как вы создаете изображение. – Miki

+0

@RiwaMl обновил фрагмент о 'cvSet2D'. Он работает так, как ожидалось. Это отличается от того, что вы делаете? Отправьте свой код ... – Miki

Смежные вопросы