1. 程式人生 > 實用技巧 >影象處理中Stride和Width的關係

影象處理中Stride和Width的關係

  一行有 11 個畫素(Width = 11), 對一個 32 位(每個畫素 4 位元組)的影象, Stride = 11 * 4 = 44.

  但還有個位元組對齊的問題, 譬如:

  一行有 11 個畫素(Width = 11), 對一個 24 位(每個畫素 3 位元組)的影象, Stride = 11 * 3 + 3 = 36.

  為什麼不是 Stride = 33? 因為它是按 4 位元組對齊的.

  根據上面道理, 我們可以手動計算 Stride 的值:

  1、Stride = 每畫素佔用的位元組數(也就是畫素位數/8) * Width;

  2、如果 Stride 不是 4 的倍數, 那麼 Stride = Stride + (4 - Stride mod 4);


配置系統控制引數 的API
HI_S32 HI_MPI_SYS_SetConf(const MPP_SYS_CONF_S *pstSysConf);
typedef struct hiMPP_SYS_CONF_S 
{ 
 /* stride of picture buffer must be aligned with this value. 
 * you can choose a value from 1 to 1024, 
 * and it except 1 must be multiple of 16.*/ 
 HI_U32 u32AlignWidth; 
 
}MPP_SYS_CONF_S;

整個系統中使用影象的 stride 位元組對齊數。取值範圍:[1, 1024],一般選擇 16 位元組對齊。靜態屬性。

這裡就要填入16的倍數。