• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁編程開發其它知識 → 非整數倍率YUV422圖像的自由縮放算法

    非整數倍率YUV422圖像的自由縮放算法

    相關軟件相關文章發表評論 來源:本站整理時間:2010/11/28 15:34:51字體大?。?em class="fontsize">A-A+

    作者:佚名點擊:330次評論:1次標簽: 自由縮放 倍率 圖片壓縮

    • 類型:圖像處理大?。?i>684KB語言:中文 評分:5.0
    • 標簽:
    立即下載

    下面的代碼,實現將一幅YUV422的雙通道圖片(640x480大小),取中間區域(560x400大小)使用插值的辦法放大至(640x480)。這個算法可以用來實現將圖片外圍區域截掉。

    #define X_RATIO (8)
    #define Y_RATIO (6)

    PUBLIC void YUVScale(JINF_YUV_CHN_T *const yuv_ptr,const uint32 Width,const uint32 Height)
    {
    uint8  *const src_y_ptr = (uint16 *)yuv_ptr->y_chn_ptr;
    uint8  *const src_uv_ptr = (uint16 *)yuv_ptr->u_chn_ptr;

    uint32  x,y,w,h=0,xl,yl,dx,dy;

    if ((Width%(X_RATIO<<1)!=0)||(Height%(Y_RATIO<<1)!=0))
    {
    TRACE("%s Width=%d,Height=%d",__func__,Width,Height);
    return;
    }

    ASSERT(PNULL != yuv_ptr);

    xl=(Width-(Width/X_RATIO))>>1;
    yl=(Height-(Height/Y_RATIO))>>1;

    dx=Width / (X_RATIO<<1);
    dy=Height / (Y_RATIO<<1);

    for (y=0; y<yl; y++,h++)
    {
    w = 0;

    for (x=0; x<xl; x+=2,w+=2)
    {
    CopyPixel:
    //2 Quadrant 2
    src_y_ptr[h*Width+w] = src_y_ptr[(dy+y)*Width+dx+x];
    src_y_ptr[h*Width+w+1] = src_y_ptr[(dy+y)*Width+dx+x+1];
    src_uv_ptr[h*Width+w] = src_uv_ptr[(dy+y)*Width+dx+x];
    src_uv_ptr[h*Width+w+1] = src_uv_ptr[(dy+y)*Width+dx+x+1];
    //2 Quadrant 1
    src_y_ptr[h*Width+(Width-w-1)] = src_y_ptr[(dy+y)*Width+(Width-dx-x-1)];
    src_y_ptr[h*Width+(Width-w-2)] = src_y_ptr[(dy+y)*Width+(Width-dx-x-2)];
    src_uv_ptr[h*Width+(Width-w-1)] = src_uv_ptr[(dy+y)*Width+(Width-dx-x-1)];
    src_uv_ptr[h*Width+(Width-w-2)] = src_uv_ptr[(dy+y)*Width+(Width-dx-x-2)];
    //2 Quadrant 4
    src_y_ptr[(Height-h-1)*Width+(Width-w-1)] = src_y_ptr[(Height-dy-y-1)*Width+(Width-dx-x-1)];
    src_y_ptr[(Height-h-1)*Width+(Width-w-2)] = src_y_ptr[(Height-dy-y-1)*Width+(Width-dx-x-2)];
    src_uv_ptr[(Height-h-1)*Width+(Width-w-1)] = src_uv_ptr[(Height-dy-y-1)*Width+(Width-dx-x-1)];
    src_uv_ptr[(Height-h-1)*Width+(Width-w-2)] = src_uv_ptr[(Height-dy-y-1)*Width+(Width-dx-x-2)];
    //2 Quadrant 3
    src_y_ptr[(Height-h-1)*Width+w] = src_y_ptr[(Height-dy-y-1)*Width+dx+x];
    src_y_ptr[(Height-h-1)*Width+w+1] = src_y_ptr[(Height-dy-y-1)*Width+dx+x+1];
    src_uv_ptr[(Height-h-1)*Width+w] = src_uv_ptr[(Height-dy-y-1)*Width+dx+x];
    src_uv_ptr[(Height-h-1)*Width+w+1] = src_uv_ptr[(Height-dy-y-1)*Width+dx+x+1];

    if (
    ((w+2) % (X_RATIO<<1))==
    ((X_RATIO<<1)-2)
    )
    {
    w+=2;
    goto CopyPixel;
    }
    }

    if (((h+1) % (Y_RATIO))==(Y_RATIO-1))
    {
    h++;

    memcpy(src_y_ptr+h*Width,src_y_ptr+(h-1)*Width,Width);
    memcpy(src_uv_ptr+h*Width,src_uv_ptr+(h-1)*Width,Width);

    memcpy(src_y_ptr+(Height-h-1)*Width,src_y_ptr+(Height-h)*Width,Width);
    memcpy(src_uv_ptr+(Height-h-1)*Width,src_uv_ptr+(Height-h)*Width,Width);
    }
    }
    }


    編寫這個算法的好處是,在不改變圖片原始大小的情況下去除照片的邊框。

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(1)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>