精华内容
下载资源
问答
  • 图像像素字节

    千次阅读 2015-09-30 09:21:09
    计算图像像素字节数的纠结 Code: int imgBuffSize = (m_imgWidth*m_nBitCount/8+3)/4*4*m_imgHeight;  就是后面的+3让我纠结了一阵子。原来是图像的像素占的字节数为4的整数倍。 从网上找了一下得到...

    Code:
    1. int imgBuffSize = (m_imgWidth*m_nBitCount/8+3)/4*4*m_imgHeight; 

    图像的像素占的字节数为4的整数倍。

    位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:     
          当biBitCount(每个像素所需的位数)=1时,8个像素占1个字节; 
          当biBitCount=4时,2个像素占1个字节; 
          当biBitCount=8时,1个像素占1个字节; 
          当biBitCount=24时,1个像素占3个字节; 
    Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充。 
    一个扫描行所占的字节数计算方法:   DataSizePerLine=   (biWidth*   biBitCount+31)/8;   
    我们后面定义了一个宏   #define   WIDTHBYTES(i)      ((i+31)/32*4)   
    每一行的字节数必须是4的整倍数,只要调用   
                      WIDTHBYTES(bi.biWidth*bi.biBitCount) 
    就能完成这一换算。 
            举一个例子,对于2色图,如果图象宽是31,则每一行需要31位存储,合3个字节加7位,因为字节数必须是4的整倍数,所以应该是4,而此时的               biWidth=31,biBitCount=1,WIDTHBYTES(31*1)=4,和我们设想的一样。再举一个256色的例子,如果图象宽是31,则每一行需要31个字节存储,因为字节数必须是4的整倍数,所以应该是32,而此时的       biWidth=31,biBitCount=8,WIDTHBYTES(31*8)=32, 
    和我们设想的一样。

    一个根据位图的每行像素点数和位数计算每行字节数的公式,为什么这样计算?

    (mImageWidth * (mImageBitCount / 8) + 3) & ~3;

    mImageWidth 位图宽度

    mImageBitCount 位图的点位数

    8bit占一个字节,图像每行的字节数必须是4的倍数,

    #define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)这个公式是经常用的

    -----------------------------------------

    (mImageWidth * (mImageBitCount / 8) + 3) /4 *4

    解释:

    其中mImageWidth * (mImageBitCount / 8)为存储像素值所需的每行字节数。我们不妨将其设为b。

    现在公式就变成了(b+3)/4*4。此处的除法为整除运算,因为每一行必须是4的倍数。所以必须要填充一定数目的无意义的字节。如b=1022,则每行字节数必须为(1022+3)/4*4=1024。

    -----------------------------------------

    & ~3和 /4 *4的效果是一样的。

    应为为4的倍数所以对于一个二进制表示来说最后两位为0.所以可以用3的取反来做位与

    -----------------------------------------

    (nImageWidth*nBitCount+31)/32*4;

    nImageWidth为图像宽度;nBitCount为每个像素所占的位数,如:二值为1,灰度为8,真彩24

    -----------------------------------------

    (((bits) + 31) / 32 * 4) 这个公式未必正确

    (mImageWidth * (mImageBitCount / 8) + 3) & ~3 绝对正确

    -----------------------------------------

    (mImageWidth * (mImageBitCount / 8) 计算每行像素需要的字节数,此时可能会存在不足,比如 31*1/8 = 3.875 实际字节数应该是 4

    计算出来的字节数应该是4的倍数,如果不足,最多相差 3 个字节,所以+3 就是

    (mImageWidth * (mImageBitCount / 8) + 3) 此时计算出来的字节数绝对足够了,但可能还有多余,也不是4的倍数,比如 31*1/8+3 = 6 实际上只要 4 字节就可以了,于是要倒扣

    4的倍数在二进制上就是最后两位为0,所以用 &~3 让最后两位为0

    ~3 就是让最后两位为0 &~3 就是让计算出来的数的二进制最后两位置为0,就可以被4整除了

    希望我这个理解是正确的吧

    展开全文
  • 像素字节关系

    千次阅读 2019-07-02 22:21:30
    像素字节 一个字节包含8个比特。像素即图片元素,通常表示位图中的一个点。 1.对于黑白图像(即二值图像),一个像素点用一个bit表示即可,即用0和1表示黑白。这样一个字节可以表示8个像素。 2.对于灰度图,一...

    像素与字节

    一个字节包含8个比特。像素即图片元素,通常表示位图中的一个点。

    1.对于黑白图像(即二值图像),一个像素点用一个bit表示即可,即用0和1表示黑白。这样一个字节可以表示8个像素。

    2.对于灰度图,一个像素要求256种状态,即2的8次方,因此需要8bit,即1个byte表示一个像素。

    3.对于RGB图,一个像素占24个bit,即3个字节表示一个像素。

    上面上个说的都是位图(bitmap),所谓位图即是用像素点表示的图

     

    一个例子

    近似求的图像像素大小例子(说近似是由于图像文件中不仅仅储存了像素

     

    假设图像大小为:953960 Byte

    图片分辨率如下:1019*478

    则像素总数=长*宽 =1019*478=487082个像素

    平均每个像素大小 = 图片大小/像素总数 = 953960 / 487082  = 1.959Byte

    化成bit则为15.67bit,即此图片一个像素约占16bit。

     

    reference

    https://zhidao.baidu.com/question/422338122.html

    https://zhidao.baidu.com/question/280839027.html

    展开全文
  • 计算图像像素字节数的纠结

    万次阅读 2011-01-07 23:51:00
    Code: int imgBuffSize = (m_imgWidth*m_...原来是图像的像素占的字节数为4的整数倍。从网上找了一下得到结果:我看到一个根据位图的每行像素点数和位数计算每行字节数的公式,请问为什么这样计算?(mImageW

    Code:
    1. int imgBuffSize = (m_imgWidth*m_nBitCount/8+3)/4*4*m_imgHeight;  

     

     

    就是后面的+3让我纠结了一阵子。原来是图像的像素占的字节数为4的整数倍。

    从网上找了一下得到结果:

    我看到一个根据位图的每行像素点数和位数计算每行字节数的公式,请问为什么这样计算?

    (mImageWidth * (mImageBitCount / 8) + 3) & ~3;

    mImageWidth 位图宽度

    mImageBitCount 位图的点位数

    -----------------------------------------

    ------------------------------------------

    #1楼 得分:10回复于:2010-08-26 20:36:34

    8bit占一个字节,图像每行的字节数必须是4的倍数,我没见过这个公式,但是

    #define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)这个公式是经常用的

    -----------------------------------------

    ------------------------------------------

    #2楼 得分:10回复于:2010-08-26 21:08:32

    (mImageWidth * (mImageBitCount / 8) + 3) /4 *4

    解释:

    其中mImageWidth * (mImageBitCount / 8)为存储像素值所需的每行字节数。我们不妨将其设为b。

    现在公式就变成了(b+3)/4*4。此处的除法为整除运算,因为每一行必须是4的倍数。所以必须要填充一定数目的无意义的字节。如b=1022,则每行字节数必须为(1022+3)/4*4=1024。

    -----------------------------------------

    ------------------------------------------

    #3楼 得分:10回复于:2010-08-26 21:11:05

    & ~3

    和 /4 *4的效果是一样的。

    应为为4的倍数所以对于一个二进制表示来说最后两位为0.所以可以用3的取反来做位与

    -----------------------------------------

    ------------------------------------------

    #4楼 得分:10回复于:2010-08-26 22:30:28

    (nImageWidth*nBitCount+31)/32*4;

    nImageWidth为图像宽度;nBitCount为每个像素所占的位数,如:二值为1,灰度为8,真彩24

    -----------------------------------------

    ------------------------------------------

    #5楼 得分:0回复于:2010-08-27 10:37:18

    (((bits) + 31) / 32 * 4) 这个公式未必正确

    (mImageWidth * (mImageBitCount / 8) + 3) & ~3 绝对正确

    -----------------------------------------

    ------------------------------------------

    #6楼 得分:0回复于:2010-08-27 10:51:19

    我的理解是:

    (mImageWidth * (mImageBitCount / 8) 计算每行像素需要的字节数,此时可能会存在不足,比如 31*1/8 = 3.875 实际字节数应该是 4

    计算出来的字节数应该是4的倍数,如果不足,最多相差 3 个字节,所以+3 就是

    (mImageWidth * (mImageBitCount / 8) + 3) 此时计算出来的字节数绝对足够了,但可能还有多余,也不是4的倍数,比如 31*1/8+3 = 6 实际上只要 4 字节就可以了,于是要倒扣

    4的倍数在二进制上就是最后两位为0,所以用 &~3 让最后两位为0

    ~3 就是让最后两位为0 &~3 就是让计算出来的数的二进制最后两位置为0,就可以被4整除了

    希望我这个理解是正确的吧

    ---------------------------------------

    展开全文
  • 一个像素点为4个字节

    千次阅读 2018-11-05 17:56:20
    【webkit的源码】https://github.com/WebKit/webkit/blob/master/Source/WebCore/html/HTMLCanvasElement.cpp#L365 ...这意味着 一个逻辑像素需要9个物理像素去补充。那就意味着 dpr=3的一个1px(逻辑)像素需要 9...

    【webkit的源码】https://github.com/WebKit/webkit/blob/master/Source/WebCore/html/HTMLCanvasElement.cpp#L365
    在这里插入图片描述
    在这里插入图片描述

    在移动端是否耗内存比较大,手机分辨率高dpr 比较大,比如iPhone6P以上都是 3倍。这意味着 一个逻辑像素需要9个物理像素去补充。那就意味着 dpr=3的一个1px(逻辑)像素需要 9个物理像素。一个物理像素需要4byte那就意味着 dpr=3的手机 1px逻辑像素 需要内容 36byte内存

    21寸显示器 19201080 1寸含有104104个像素点
    在这里插入图片描述

    展开全文
  • 一个像素占用多大内存,多少字节? 这个问题取决于需要存储一个像素的多少信息,以及是否采用了压缩技术。 如果是非黑即白的二值图像,不压缩的情况下一个像素只需要一个bit。 如果是256中状态的灰度图像,不压缩的...
  • 获取BMP每行像素字节数!

    千次阅读 2013-08-13 20:01:10
    参考:  ...// +31是为了凑足32位,/32 得到有多少个 32位,也就是多少个 4字节, *4 得到多少个字节   typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1];
  • 一个像素占多大内存 多少字节

    万次阅读 2018-09-30 13:21:23
    1TB=1024GB 1GB=1024MB 1MB=1024KB 1KB=1024B 1B=8b...如果是256种状态的灰度图像,不压缩的情况下一个像素需要8bit(1字节,256种状态)。 如果用256种状态标识屏幕上某种颜色的灰度,而屏幕采用三基色红绿蓝(RGB...
  • YUV 4:4:4采样,每一个Y对应一组UV分量。...YUV 4:4:4采样,每一个Y对应一组UV分量,也就是说1个像素点占1个Y和一组UV,也就是3个字节。 经上分析可以得出以下结论: YUV 420(NV12 NV21) 每个像素:1.5个字...
  • 直接说结论吧:在使用Opencv时,内部规定,图像每行所占字节数必须是4的倍数,才能保证无误的转换;否则存在异常。 问题描述 题主项目中的图像存在些许像素的裁剪,一开始裁剪列数设置10没有任何问题,当设置其他...
  • byte——用于描述数据文件大小、磁盘或者其他存储介质空间的容量或者通过网络传输的数据量的单位,1字节相当于8比特。通常用大写的B来表示Byte; 1 kb(kilobyt)——1024比特; 1 KB(kilobyte)——1024字节;...
  • 如果是256种状态的灰度图像,不压缩的情况下一个像素需要8bit(1字节,256种状态)。 如果用256种状态标识屏幕上某种颜色的灰度,而屏幕采用三基色红绿蓝(RGB),不压缩的情况下一个像素需要占...
  • 位图操作函数WIDTHBYTES 一、定义 #define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4); 计算图像每行象素所占的字节数目,设置成4的整数倍 //=(((bits) + 31) / 8) ...bits:一个btmap中一行像素的位数总和...
  • byte——用于描述数据文件大小、磁盘或者其他存储介质空间的容量或者通过网络传输的数据量的单位,1字节相当于8比特。通常用大写的B来表示Byte; 1 kb(kilobyt)——1024比特; 1 KB(kilobyte) ——1024字节; ...
  • BMP文件像素操作

    2013-06-06 12:23:43
    直接解析位图文件的话,获取的像素信息都是倒叙的,而且像素是以结构 typedef struct tagRGBTRIPLE {  BYTE  rgbtBlue;  BYTE  rgbtGreen;  BYTE  rgbtRed;...如果一行存储的像素字节
  • 1.QString 用length()返回字符串的长度,即字节数, 在中英文字符都是以 Unicode 方式编码的,所以,无论中英文都算的长度为 1。 想要取得英文长度为 1 中文长度为 2 的总长度,必须用toLocal8bit()。具体使用方法...
  • C# 图片与字节数组(byte[])二进制相互转换,获取大小像素扩展名 https://blog.csdn.net/kongwei521/article/details/6871461 C#+Stream+和+byte[]+之间的转换 ......
  • 字节和兆字节的换算Megabyte is a multiple of the unit byte which is used in computing to describe digital data or information size or speed. Megabyte simply represented with the MB . Actually Megabyte ...
  • OpenCV字节对齐

    2016-10-13 18:08:18
    前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。 在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补...
  • Windows系统中一行像素所占的字节数为4的倍数,因此不是4的倍数时要补充为4的倍数, 这样在寻址每一个像素的时候,像素的地址为 pImage+i*lineByte+j ; 而循环控制语句 for (j= 0 ; j; j++)中仍用width, ...
  • 和机器字长及编译器有关系:所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的): 1 ... int至少应为16位(2字节) 4 long int至少应为32位。 unsigned 是无符号的意
  • (2)设置图片的图片模式:下面设置为每个像素占两个字节,为无透明的模式。 BitmapFactory.Options options = new BitmapFactory.Options(); options. inPreferredConfig = Bitmap.Config. RGB_565 ; ...
  • 一个像素的颜色在计算机中由多少个字节数据来描述。计算机中用二进制位来表示一个像素的数据,用来表示一个像素的数据位越多,则这个像素的颜色值更加丰富、分的更细,颜色深度就更深。 一般来说像素深度有这么几种...
  • BMP字节对齐

    千次阅读 2013-03-22 11:05:26
    BMP字节对齐 最近做的プロトタイプ涉及到黑白,灰色,彩色BMP转PDF的问题。 其中,BMP读取显示时要4位字节对齐原因和算法总结如下 原因 1、 内存分配单位是32位的,即4字节 2、 位图中每行象素的数据是连续的...
  • 像素与颜色

    千次阅读 2014-03-07 16:21:28
    在内存中,每个像素点由4字节构成,这4个字节的代表的含义如下:  (1)第一个字节决定像素的红色值  (2)第二个字节决定像素的绿色值  (3)第三个字节决定像素的蓝色值  (4)第四个字节决定
  • 图片的像素和分辨率 对于像素和分辨率这两个词,主要见于图片和显示设备上。只要你用到手机里的照相功能,你都要接触到这两个概念。只是大多数人都是一知半解,而更多的人却根本就不知道,白白浪费了手机里500万...
  • 计算图像每行占用的字节

    千次阅读 2019-01-01 10:48:01
    在看《数字图像处理与机器视觉》这本书的时候有个计算图像每行占用的字节数,刚开始没看...位图的一个像素值所占的字节数: 当biBitCount=1时,8个像素占1个字节; 当biBitCount=4时,2个像素占1个字节; 当biBit...
  • 无意中在百度文库看到的,哎都是复制粘贴,md那么多错误你还粘贴不是误导别人么。... 当biBitCount(每个像素所需的位数)=1时,8个像素占1个字节;   当biBitCount=4时,2个像素占1个字节;   

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,047
精华内容 23,618
关键字:

像素字节