5

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

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

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

提前致谢 !

4

7 回答 7

19

你用的是什么版本的opencv?格式,

#include <opencv2/opencv.hpp>
cv::Mat image(320, 240, CV_8UC3, cv::Scalar(0, 0, 0));
于 2013-08-02T09:02:51.033 回答
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);
于 2013-08-01T16:41:47.280 回答
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;

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

于 2013-08-01T07:35:05.973 回答
1

对于 Python:

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

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

于 2017-03-15T11:41:15.453 回答
0

这是我的贡献:

cv::Mat output = cv::Mat::zeros(cv::Size(320, 240), CV_8UC3);
于 2020-05-27T15:15:52.487 回答
0

黑白图像表示单通道图像。您可以按如下方式简单地创建它。

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

"a" 在 0-255 之间

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

于 2017-01-20T17:25:02.563 回答
-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;
}
于 2014-10-10T08:15:52.800 回答