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

时间:2013-08-01 02:46:26

标签: image opencv

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

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

我得到的是纯灰色图像,而不是黑色图像。

提前致谢!

7 个答案:

答案 0 :(得分:15)

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

Mat image(320, 240, CV_8UC3, Scalar(0,0,0));

答案 1 :(得分: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);

答案 2 :(得分:1)

致电

cvCreateImage(cvSize(320, 240), 8, 3);

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

您应该尝试初始化:

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;

(灵感来自this (Example C Program)

答案 3 :(得分:0)

黑白图像是指单通道图像。您可以按照以下方式创建它。

Mat img(500, 1000, CV_8UC1, Scalar(a));

&#34;&#34;在0-255之间

您可以从以下页面查看更多检查和详细信息 https://progtpoint.blogspot.com/2017/01/tutorial-3-create-image.html

答案 4 :(得分:0)

对于Python:

import numpy as np
X_DIMENSION = 288
Y_DIMENSION = 382
black_image = np.zeros((X_DIMENSION, Y_DIMENSION))

使用此代码生成一个numpy数组,这是opencv图像的预期数,并用零填充它,这是黑色的颜色。此代码用于灰度图像。如果您希望它是RGB黑色图像,只需在tupple的末尾添加3即可创建尺寸np.zeros((X_DIMENSION, Y_DIMENSION, 3))

答案 5 :(得分:0)

这是我的贡献:

cv::Mat output = cv::Mat::zeros(cv::Size(320, 240), CV_8UC3);

答案 6 :(得分:-1)

#include "stdafx.h"
#include <opencv/cxcore.h>
#include <opencv/highgui.h>
#include <iostream>

using namespace cv;
using namespace std;
#define LOAD_OPTION CV_LOAD_IMAGE_COLOR 

int main( int argc, char** argv )
{
    IplImage  *image; 


    image = cvLoadImage("picture.jpg",0); // 0 : BLACK AND WHITE , Without 0 -> Color Picture
    cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);
    cvShowImage("Image", image);
    waitKey(-1);

   return 0;
}