【发布时间】:2019-06-09 12:40:29
【问题描述】:
我对 C++ 中的 OpenCV 4.1.0 和 memcpy 有一些误解。问题是为什么图像放大很多? 我读到这样一张图片:
Mat img = imread("lena512.bmp", 1); // Black and White Image
namedWindow("Display window", WINDOW_AUTOSIZE);
imshow("Display window", img);
在这之后我有 2 字节数组:
int inputSize = width * height * channels;
byte* pixels = new byte[width * height * channels];
byte* out = new byte[width * height * channels];
我将 img 复制到像素数组:
memcpy(pixels, img.data, inputSize * sizeof(byte));
然后我想检查检索图像是否与输入相同:
Mat image = Mat(width, height , CV_8U);
memcpy(image.data, out, inputSize * sizeof(byte));
【问题讨论】:
-
宽度和/或高度和/或通道很可能是错误的。
-
图像宽度(像素/8)和缓冲区宽度(字节)可能不同。许多图像格式要求线宽是某个因子的整数倍。