C++ x265编码器';平面';排列

C++ x265编码器';平面';排列,c++,encoding,h.265,libx265,C++,Encoding,H.265,Libx265,在使用x265编码器()进行编码的过程中,我想在编码新图像后将图像像素值(特别是Y通道的值)写入.txt文件(原因不重要)。为此,我使用x265_类picture的“planes”变量: 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 pi

在使用x265编码器()进行编码的过程中,我想在编码新图像后将图像像素值(特别是Y通道的值)写入.txt文件(原因不重要)。为此,我使用x265_类picture的“planes”变量:

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()
x265_图片*pic_out;#用于存储编码图像的变量
... # 编码过程
uint8_t*平面=(uint8_t*)pic_out->平面[0];
uint32\u t pixelCount=x265\u图片平面化(pic\u out->colorSpace,m\u param->sourceWidth,m\u param->sourceHeight,0);
流输出文件(“out_file.txt”);
对于(uint32_t j=0;jout谢谢大家,刚刚解决了这个问题……关键是使用'src+=srcStride':

ofstream out_file("out_file.txt");
int srcStride = pic_out->stride[0] / sizeof(pixel);
uint8_t* src = (uint8_t*) pic_out->planes[0];

for (int y = 0; y < m_param->sourceHeight; y++, src += srcStride)
{
    for (int x = 0; x < m_param->sourceWidth; x++)
        out_file << (int)(src[x]) << ",";
}
out_file.close();
流输出文件(“out\u file.txt”)的
;
int srcStride=pic_out->stride[0]/sizeof(像素);
uint8_t*src=(uint8_t*)pic_out->平面[0];
对于(int y=0;ysourceHeight;y++,src++=srcStride)
{
对于(int x=0;xsourceWidth;x++)

out_文件您从哪里获得x265_picturePlaneSize函数?我在标题中没有看到它。有一段时间没有使用它,但它位于x265/source/common/common.cppits定义:uint32_t x265_picturePlaneSize(int-csp,int-width,int-height,int-plane){uint32_-size=(uint32_-t)(width>>x265_-cli-csp[csp].width[plane])*(高度>>x265_cli_csps[csp].height[plane]);返回大小;}感谢您的指针。