来自 OpenCV 新手的非常基本的问题。我只想创建一个将每个像素设置为0
(黑色)的图像。我在 main() 函数中使用了以下代码:
IplImage* imgScribble = cvCreateImage(cvSize(320, 240), 8, 3);
我得到的是纯灰色图像,而不是黑色图像。
提前致谢 !
你用的是什么版本的opencv?格式,
#include <opencv2/opencv.hpp>
cv::Mat image(320, 240, CV_8UC3, cv::Scalar(0, 0, 0));
我可以建议另外两个替代方案:
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);
呼吁
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 程序))
对于 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))
这是我的贡献:
cv::Mat output = cv::Mat::zeros(cv::Size(320, 240), CV_8UC3);
黑白图像表示单通道图像。您可以按如下方式简单地创建它。
Mat img(500, 1000, CV_8UC1, Scalar(a));
"a" 在 0-255 之间
您可以从以下页面查看更多示例和详细信息 https://progtpoint.blogspot.com/2017/01/tutorial-3-create-image.html
#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;
}