在使用 x265 编码器(https://x265.readthedocs.org/en/default/api.html)的编码过程中,我想在新图像编码后将图像像素值(特别是 Y 通道的值)写入 .txt 文件(不重要为什么)。为此,我使用 x265_picture 类的“平面”变量:
x265_picture* pic_out; # variable where encoded image is to be stored
... # encoding process
uint8_t *plane = (uint8_t*)pic_out->planes[0];
uint32_t pixelCount = x265_picturePlaneSize(pic_out->colorSpace, m_param->sourceWidth, m_param->sourceHeight, 0);
ofstream out_file("out_file.txt");
for (uint32_t j = 0; j < pixelCount; j++) # loop for all pixels
{
int pix_val = plane[j];
out << pix_val;
}
ofstream.close()
但是当我将输出数据重建成图像时,我得到
代替
或另一个例子:
代替
(颜色不重要,“条纹”才是重点)
在输出文件中,似乎有(显然)正确顺序的数据间隔(比如说 89,90,102,98,...),后面总是跟着长的相等数字序列(例如 235,235,235,235... 或 65,65, 65,65...),“创建”条纹。有人可以告诉我我错过了什么吗?