来自OpenCV新手的非常基本的问题。我只想创建一个图像,每个像素设置为0
(黑色)。我在main()函数中使用了以下代码:
IplImage* imgScribble = cvCreateImage(cvSize(320, 240), 8, 3);
我得到的是纯灰色图像,而不是黑色图像。
提前致谢!
答案 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;
}