c++ - 图像格式和无符号字符数组

标签 c++ image arrays byte imaging

我正在开发成像功能(是的,由于各种原因我真的想重新发明轮子)。

我正在将位图复制到无符号字符数组中,但在字节大小与图像像素格式之间存在一些问题。

例如,很 multimap 像以每像素 24 位的 RGB 表示,因此这相当简单,每个像素都有 3 个无符号字符(字节),每个人都很高兴

但是有时 RGB 具有更奇怪的类型,例如每像素 48 位,因此每个颜色 channel 16 位。将整个图像复制到字节数组中效果很好,但当我想检索数据时,事情会变得模糊

现在我有以下代码来获取灰度图像的单个像素

unsigned char NImage::get_pixel(int i, int j)
   {
   return this->data[j * pitch + i];
   }

NImage::data 是无符号字符数组

这将返回一个字节。如何访问具有不同像素格式的数据数组?

最佳答案

你应该这样做:

unsigned short NImage::get_pixel(int i, int j)
   {
       int offset = 2 * (j * pitch + i);
      // image pixels are usually stored in big-endian format
      return data[offset]*256 + data[offset+1];
   }

关于c++ - 图像格式和无符号字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059804/

相关文章:

python - 在 OpenCV Python 中编写超过 4 个 channel 的图像

Android 从 Gallery NullPointerException 中选择图像?

ios - 在 objective-c 中的字符串数组中进行字符串搜索

Javascript 将 'array string' 转换为数组

c++ - 使用 C++ Mysql 驱动程序转义字符串

c++ - 为什么我不能取消引用这个迭代器?

c++ - 确定文件 HANDLE 是否为管道句柄

c++ - 澄清使用 CMake 生成 OpenCV 库时的步骤

swift - 第一次使用带有 SDWebImage 的 CKAsset - 无法将数据转换为 URL

javascript - 在数组中添加输入值