使用cvcreateimage使用opencv创建一个简单的黑色图像

Ken*_*uel 4 opencv image

来自OpenCV新手的非常基本的问题.我只想创建一个图像,每个像素设置为0(黑色).我在main()函数中使用了以下代码:

IplImage* imgScribble = cvCreateImage(cvSize(320, 240), 8, 3);
Run Code Online (Sandbox Code Playgroud)

我得到的是一个坚实的灰色图像,而不是黑色图像.

提前致谢 !

小智 16

您使用的是哪个版本的opencv?对于Mat,

Mat image(320, 240, CV_8UC3, Scalar(0,0,0));
Run Code Online (Sandbox Code Playgroud)


And*_*dov 5

我可以建议另外两个替代品:

    IplImage* imgScribble = cvCreateImage(cvSize(320, 240), 8, 3);

    // Here you can set any color
    cvSet(imgScribble, cvScalar(0,0,0));


    // Here only black
    cvZero(imgScribble);
Run Code Online (Sandbox Code Playgroud)


Dim*_*lyn 1

致电给

cvCreateImage(cvSize(320, 240), 8, 3);
Run Code Online (Sandbox Code Playgroud)

在内存中创建图像,但我不认为它初始化数据。

你应该尝试这个来初始化:

step= imgScribble->widthStep;
data = (uchar *)imgScribble->imageData;
for(i=0;i<imgScribble->height;i++) for(j=0;j<img->width;j++) for(k=0;k<3;k++) 
    data[i*step+j*3+k]=0;
Run Code Online (Sandbox Code Playgroud)

(受此启发(示例 C 程序))