在C语言的灰度图像中使用cvSet2D?

时间:2015-07-29 11:52:52

标签: c opencv

我想使用CvSet2D在给定的bmp图像中设置像素值,但我想只访问第一个值。你能解释一下CvSet2D的4个参数是什么吗?

例如:

#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 个答案:

答案 0 :(得分:1)

您可以参考this问题。

  

C:void cvSet2D(CvArr * arr,int idx0,int idx1,CvScalar value)

参数是:

  • arr - 输入数组(即图像)
  • 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);