日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

resize函数

發布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 resize函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

resize函數:

主要用于調整圖像的大小

函數調用格式:

void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )


參數詳解:

InputArray src, OutputArray dst:分別表示輸入和輸出圖像

?Size dsize:表示輸出圖像的大小

double fx=0, double fy=0:表示x和y方向上變換大小的因素,當都是0的時候:

? ? ? ? ? ? ? ? ? ?


int interpolation=INTER_LINEAR :表示插值方法

? INTER_NN - 最近鄰差值,?
? INTER_LINEAR -??雙線性差值 (缺省使用)?
? INTER_AREA -??使用象素關系重采樣。當圖像縮小時候,該方法
可以避免波紋出現。當圖像放大時,類似于?INTER_NN??方法..?
? INTER_CUBIC -??立方差值.?

1、最近鄰:公式,

? ? ? ? ? ? ? ? ??

[cpp]?view plaincopy
  • for?(int?i?=?0;?i?<?matDst1.cols;?++i)??
  • {??
  • ????int?sx?=?cvFloor(i?*?scale_x);??
  • ????sx?=?std::min(sx,?matSrc.cols?-?1);??
  • ????for?(int?j?=?0;?j?<?matDst1.rows;?++j)??
  • ????{??
  • ????????int?sy?=?cvFloor(j?*?scale_y);??
  • ????????sy?=?std::min(sy,?matSrc.rows?-?1);??
  • ????????matDst1.at<cv::Vec3b>(j,?i)?=?matSrc.at<cv::Vec3b>(sy,?sx);??
  • ????}??
  • }??
  • cv::imwrite("nearest_1.jpg",?matDst1);??
  • ??
  • cv::resize(matSrc,?matDst2,?matDst1.size(),?0,?0,?0);??
  • cv::imwrite("nearest_2.jpg",?matDst2);??

  • 2、雙線性:由相鄰的四像素(2*2)計算得出,公式,


    [cpp]?view plaincopy
  • uchar*?dataDst?=?matDst1.data;??
  • int?stepDst?=?matDst1.step;??
  • uchar*?dataSrc?=?matSrc.data;??
  • int?stepSrc?=?matSrc.step;??
  • int?iWidthSrc?=?matSrc.cols;??
  • int?iHiehgtSrc?=?matSrc.rows;??
  • ??
  • for?(int?j?=?0;?j?<?matDst1.rows;?++j)??
  • {??
  • ????float?fy?=?(float)((j?+?0.5)?*?scale_y?-?0.5);??
  • ????int?sy?=?cvFloor(fy);??
  • ????fy?-=?sy;??
  • ????sy?=?std::min(sy,?iHiehgtSrc?-?2);??
  • ????sy?=?std::max(0,?sy);??
  • ??
  • ????short?cbufy[2];??
  • ????cbufy[0]?=?cv::saturate_cast<short>((1.f?-?fy)?*?2048);??
  • ????cbufy[1]?=?2048?-?cbufy[0];??
  • ??
  • ????for?(int?i?=?0;?i?<?matDst1.cols;?++i)??
  • ????{??
  • ????????float?fx?=?(float)((i?+?0.5)?*?scale_x?-?0.5);??
  • ????????int?sx?=?cvFloor(fx);??
  • ????????fx?-=?sx;??
  • ??
  • ????????if?(sx?<?0)?{??
  • ????????????fx?=?0,?sx?=?0;??
  • ????????}??
  • ????????if?(sx?>=?iWidthSrc?-?1)?{??
  • ????????????fx?=?0,?sx?=?iWidthSrc?-?2;??
  • ????????}??
  • ??
  • ????????short?cbufx[2];??
  • ????????cbufx[0]?=?cv::saturate_cast<short>((1.f?-?fx)?*?2048);??
  • ????????cbufx[1]?=?2048?-?cbufx[0];??
  • ??
  • ????????for?(int?k?=?0;?k?<?matSrc.channels();?++k)??
  • ????????{??
  • ????????????*(dataDst+?j*stepDst?+?3*i?+?k)?=?(*(dataSrc?+?sy*stepSrc?+?3*sx?+?k)?*?cbufx[0]?*?cbufy[0]?+???
  • ????????????????*(dataSrc?+?(sy+1)*stepSrc?+?3*sx?+?k)?*?cbufx[0]?*?cbufy[1]?+???
  • ????????????????*(dataSrc?+?sy*stepSrc?+?3*(sx+1)?+?k)?*?cbufx[1]?*?cbufy[0]?+???
  • ????????????????*(dataSrc?+?(sy+1)*stepSrc?+?3*(sx+1)?+?k)?*?cbufx[1]?*?cbufy[1])?>>?22;??
  • ????????}??
  • ????}??
  • }??
  • cv::imwrite("linear_1.jpg",?matDst1);??
  • ??
  • cv::resize(matSrc,?matDst2,?matDst1.size(),?0,?0,?1);??
  • cv::imwrite("linear_2.jpg",?matDst2);??

  • 3、雙三次:由相鄰的4*4像素計算得出,公式類似于雙線性

    [cpp]?view plaincopy
  • int?iscale_x?=?cv::saturate_cast<int>(scale_x);??
  • int?iscale_y?=?cv::saturate_cast<int>(scale_y);??
  • ??
  • for?(int?j?=?0;?j?<?matDst1.rows;?++j)??
  • {??
  • ????float?fy?=?(float)((j?+?0.5)?*?scale_y?-?0.5);??
  • ????int?sy?=?cvFloor(fy);??
  • ????fy?-=?sy;??
  • ????sy?=?std::min(sy,?matSrc.rows?-?3);??
  • ????sy?=?std::max(1,?sy);??
  • ??
  • ????const?float?A?=?-0.75f;??
  • ??
  • ????float?coeffsY[4];??
  • ????coeffsY[0]?=?((A*(fy?+?1)?-?5*A)*(fy?+?1)?+?8*A)*(fy?+?1)?-?4*A;??
  • ????coeffsY[1]?=?((A?+?2)*fy?-?(A?+?3))*fy*fy?+?1;??
  • ????coeffsY[2]?=?((A?+?2)*(1?-?fy)?-?(A?+?3))*(1?-?fy)*(1?-?fy)?+?1;??
  • ????coeffsY[3]?=?1.f?-?coeffsY[0]?-?coeffsY[1]?-?coeffsY[2];??
  • ??
  • ????short?cbufY[4];??
  • ????cbufY[0]?=?cv::saturate_cast<short>(coeffsY[0]?*?2048);??
  • ????cbufY[1]?=?cv::saturate_cast<short>(coeffsY[1]?*?2048);??
  • ????cbufY[2]?=?cv::saturate_cast<short>(coeffsY[2]?*?2048);??
  • ????cbufY[3]?=?cv::saturate_cast<short>(coeffsY[3]?*?2048);??
  • ??
  • ????for?(int?i?=?0;?i?<?matDst1.cols;?++i)??
  • ????{??
  • ????????float?fx?=?(float)((i?+?0.5)?*?scale_x?-?0.5);??
  • ????????int?sx?=?cvFloor(fx);??
  • ????????fx?-=?sx;??
  • ??
  • ????????if?(sx?<?1)?{??
  • ????????????fx?=?0,?sx?=?1;??
  • ????????}??
  • ????????if?(sx?>=?matSrc.cols?-?3)?{??
  • ????????????fx?=?0,?sx?=?matSrc.cols?-?3;??
  • ????????}??
  • ??
  • ????????float?coeffsX[4];??
  • ????????coeffsX[0]?=?((A*(fx?+?1)?-?5*A)*(fx?+?1)?+?8*A)*(fx?+?1)?-?4*A;??
  • ????????coeffsX[1]?=?((A?+?2)*fx?-?(A?+?3))*fx*fx?+?1;??
  • ????????coeffsX[2]?=?((A?+?2)*(1?-?fx)?-?(A?+?3))*(1?-?fx)*(1?-?fx)?+?1;??
  • ????????coeffsX[3]?=?1.f?-?coeffsX[0]?-?coeffsX[1]?-?coeffsX[2];??
  • ??
  • ????????short?cbufX[4];??
  • ????????cbufX[0]?=?cv::saturate_cast<short>(coeffsX[0]?*?2048);??
  • ????????cbufX[1]?=?cv::saturate_cast<short>(coeffsX[1]?*?2048);??
  • ????????cbufX[2]?=?cv::saturate_cast<short>(coeffsX[2]?*?2048);??
  • ????????cbufX[3]?=?cv::saturate_cast<short>(coeffsX[3]?*?2048);??
  • ??
  • ????????for?(int?k?=?0;?k?<?matSrc.channels();?++k)??
  • ????????{??
  • ????????????matDst1.at<cv::Vec3b>(j,?i)[k]?=?abs((matSrc.at<cv::Vec3b>(sy-1,?sx-1)[k]?*?cbufX[0]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy,?sx-1)[k]?*?cbufX[0]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx-1)[k]?*?cbufX[0]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy+2,?sx-1)[k]?*?cbufX[0]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx)[k]?*?cbufX[1]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy,?sx)[k]?*?cbufX[1]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx)[k]?*?cbufX[1]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy+2,?sx)[k]?*?cbufX[1]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx+1)[k]?*?cbufX[2]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy,?sx+1)[k]?*?cbufX[2]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx+1)[k]?*?cbufX[2]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy+2,?sx+1)[k]?*?cbufX[2]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx+2)[k]?*?cbufX[3]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy,?sx+2)[k]?*?cbufX[3]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx+2)[k]?*?cbufX[3]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy+2,?sx+2)[k]?*?cbufX[3]?*?cbufY[3]?)?>>?22);??
  • ????????}??
  • ????}??
  • }??
  • cv::imwrite("cubic_1.jpg",?matDst1);??
  • ??
  • cv::resize(matSrc,?matDst2,?matDst1.size(),?0,?0,?2);??
  • cv::imwrite("cubic_2.jpg",?matDst2);??
  • 4、基于像素區域關系:共分三種情況,圖像放大時類似于雙線性插值,圖像縮小(x軸、y軸同時縮小)又分兩種情況,此情況下可以避免波紋出現。

    [cpp]?view plaincopy
  • cv::resize(matSrc,?matDst2,?matDst1.size(),?0,?0,?3);??
  • cv::imwrite("area_2.jpg",?matDst2);??
  • ??
  • double?inv_scale_x?=?1.?/?scale_x;??
  • double?inv_scale_y?=?1.?/?scale_y;??
  • int?iscale_x?=?cv::saturate_cast<int>(scale_x);??
  • int?iscale_y?=?cv::saturate_cast<int>(scale_y);??
  • bool?is_area_fast?=?std::abs(scale_x?-?iscale_x)?<?DBL_EPSILON?&&?std::abs(scale_y?-?iscale_y)?<?DBL_EPSILON;??
  • ??
  • if?(scale_x?>=?1?&&?scale_y?>=?1)?//zoom?out??
  • {??
  • ????if?(is_area_fast)?//integer?multiples??
  • ????{??
  • ????????for?(int?j?=?0;?j?<?matDst1.rows;?++j)??
  • ????????{??
  • ????????????int?sy?=?j?*?scale_y;??
  • ??
  • ????????????for?(int?i?=?0;?i?<?matDst1.cols;?++i)??
  • ????????????{??
  • ????????????????int?sx?=?i?*?scale_x;??
  • ??
  • ????????????????matDst1.at<cv::Vec3b>(j,?i)?=?matSrc.at<cv::Vec3b>(sy,?sx);??
  • ????????????}??
  • ????????}??
  • ????????cv::imwrite("area_1.jpg",?matDst1);??
  • ????????return?0;??
  • ????}??
  • ??
  • ????for?(int?j?=?0;?j?<?matDst1.rows;?++j)??
  • ????{??
  • ????????double?fsy1?=?j?*?scale_y;??
  • ????????double?fsy2?=?fsy1?+?scale_y;??
  • ????????double?cellHeight?=?cv::min(scale_y,?matSrc.rows?-?fsy1);??
  • ??
  • ????????int?sy1?=?cvCeil(fsy1),?sy2?=?cvFloor(fsy2);??
  • ??
  • ????????sy2?=?std::min(sy2,?matSrc.rows?-?1);??
  • ????????sy1?=?std::min(sy1,?sy2);??
  • ??
  • ????????float?cbufy[2];??
  • ????????cbufy[0]?=?(float)((sy1?-?fsy1)?/?cellHeight);??
  • ????????cbufy[1]?=?(float)(std::min(std::min(fsy2?-?sy2,?1.),?cellHeight)?/?cellHeight);??
  • ??
  • ????????for?(int?i?=?0;?i?<?matDst1.cols;?++i)??
  • ????????{??
  • ????????????double?fsx1?=?i?*?scale_x;??
  • ????????????double?fsx2?=?fsx1?+?scale_x;??
  • ????????????double?cellWidth?=?std::min(scale_x,?matSrc.cols?-?fsx1);??
  • ??
  • ????????????int?sx1?=?cvCeil(fsx1),?sx2?=?cvFloor(fsx2);??
  • ??
  • ????????????sx2?=?std::min(sx2,?matSrc.cols?-?1);??
  • ????????????sx1?=?std::min(sx1,?sx2);??
  • ??
  • ????????????float?cbufx[2];??
  • ????????????cbufx[0]?=?(float)((sx1?-?fsx1)?/?cellWidth);??
  • ????????????cbufx[1]?=?(float)(std::min(std::min(fsx2?-?sx2,?1.),?cellWidth)?/?cellWidth);??
  • ??
  • ????????????for?(int?k?=?0;?k?<?matSrc.channels();?++k)??
  • ????????????{??
  • ????????????????matDst1.at<cv::Vec3b>(j,?i)[k]?=?(uchar)(matSrc.at<cv::Vec3b>(sy1,?sx1)[k]?*?cbufx[0]?*?cbufy[0]?+???
  • ????????????????????matSrc.at<cv::Vec3b>(sy1?+?1,?sx1)[k]?*?cbufx[0]?*?cbufy[1]?+???
  • ????????????????????matSrc.at<cv::Vec3b>(sy1,?sx1?+?1)[k]?*?cbufx[1]?*?cbufy[0]?+???
  • ????????????????????matSrc.at<cv::Vec3b>(sy1?+?1,?sx1?+?1)[k]?*?cbufx[1]?*?cbufy[1]);??
  • ????????????}??
  • ????????}??
  • ????}??
  • ????cv::imwrite("area_1.jpg",?matDst1);??
  • ????return?0;??
  • }??
  • ??
  • //zoom?in,it?is?emulated?using?some?variant?of?bilinear?interpolation??
  • for?(int?j?=?0;?j?<?matDst1.rows;?++j)??
  • {??
  • ????int??sy?=?cvFloor(j?*?scale_y);??
  • ????float?fy?=?(float)((j?+?1)?-?(sy?+?1)?*?inv_scale_y);??
  • ????fy?=?fy?<=?0???0.f?:?fy?-?cvFloor(fy);??
  • ??
  • ????short?cbufy[2];??
  • ????cbufy[0]?=?cv::saturate_cast<short>((1.f?-?fy)?*?2048);??
  • ????cbufy[1]?=?2048?-?cbufy[0];??
  • ??
  • ????for?(int?i?=?0;?i?<?matDst1.cols;?++i)??
  • ????{??
  • ????????int?sx?=?cvFloor(i?*?scale_x);??
  • ????????float?fx?=?(float)((i?+?1)?-?(sx?+?1)?*?inv_scale_x);??
  • ????????fx?=?fx?<?0???0.f?:?fx?-?cvFloor(fx);??
  • ??
  • ????????if?(sx?<?0)?{??
  • ????????????fx?=?0,?sx?=?0;??
  • ????????}??
  • ??
  • ????????if?(sx?>=?matSrc.cols?-?1)?{??
  • ????????????fx?=?0,?sx?=?matSrc.cols?-?2;??
  • ????????}??
  • ??
  • ????????short?cbufx[2];??
  • ????????cbufx[0]?=?cv::saturate_cast<short>((1.f?-?fx)?*?2048);??
  • ????????cbufx[1]?=?2048?-?cbufx[0];??
  • ??
  • ????????for?(int?k?=?0;?k?<?matSrc.channels();?++k)??
  • ????????{??
  • ????????????matDst1.at<cv::Vec3b>(j,?i)[k]?=?(matSrc.at<cv::Vec3b>(sy,?sx)[k]?*?cbufx[0]?*?cbufy[0]?+???
  • ????????????????matSrc.at<cv::Vec3b>(sy?+?1,?sx)[k]?*?cbufx[0]?*?cbufy[1]?+???
  • ????????????????matSrc.at<cv::Vec3b>(sy,?sx?+?1)[k]?*?cbufx[1]?*?cbufy[0]?+???
  • ????????????????matSrc.at<cv::Vec3b>(sy?+?1,?sx?+?1)[k]?*?cbufx[1]?*?cbufy[1])?>>?22;??
  • ????????}??
  • ????}??
  • }??
  • cv::imwrite("area_1.jpg",?matDst1);??

  • 5、蘭索斯插值:由相鄰的8*8像素計算得出,公式類似于雙線性

    [cpp]?view plaincopy
  • int?iscale_x?=?cv::saturate_cast<int>(scale_x);??
  • int?iscale_y?=?cv::saturate_cast<int>(scale_y);??
  • ??
  • for?(int?j?=?0;?j?<?matDst1.rows;?++j)??
  • {??
  • ????float?fy?=?(float)((j?+?0.5)?*?scale_y?-?0.5);??
  • ????int?sy?=?cvFloor(fy);??
  • ????fy?-=?sy;??
  • ????sy?=?std::min(sy,?matSrc.rows?-?5);??
  • ????sy?=?std::max(3,?sy);??
  • ??
  • ????const?double?s45?=?0.70710678118654752440084436210485;??
  • ????const?double?cs[][2]?=?{{1,?0},?{-s45,?-s45},?{0,?1},?{s45,?-s45},?{-1,?0},?{s45,?s45},?{0,?-1},?{-s45,?s45}};??
  • ????float?coeffsY[8];??
  • ??
  • ????if?(fy?<?FLT_EPSILON)?{??
  • ????????for?(int?t?=?0;?t?<?8;?t++)??
  • ????????????coeffsY[t]?=?0;??
  • ????????coeffsY[3]?=?1;??
  • ????}?else?{??
  • ????????float?sum?=?0;??
  • ????????double?y0?=?-(fy?+?3)?*?CV_PI?*?0.25,?s0?=?sin(y0),?c0?=?cos(y0);??
  • ??
  • ????????for?(int?t?=?0;?t?<?8;?++t)??
  • ????????{??
  • ????????????double?dy?=?-(fy?+?3?-t)?*?CV_PI?*?0.25;??
  • ????????????coeffsY[t]?=?(float)((cs[t][0]?*?s0?+?cs[t][1]?*?c0)?/?(dy?*?dy));??
  • ????????????sum?+=?coeffsY[t];??
  • ????????}??
  • ??
  • ????????sum?=?1.f?/?sum;??
  • ????????for?(int?t?=?0;?t?<?8;?++t)??
  • ????????????coeffsY[t]?*=?sum;??
  • ????}??
  • ??
  • ????short?cbufY[8];??
  • ????cbufY[0]?=?cv::saturate_cast<short>(coeffsY[0]?*?2048);??
  • ????cbufY[1]?=?cv::saturate_cast<short>(coeffsY[1]?*?2048);??
  • ????cbufY[2]?=?cv::saturate_cast<short>(coeffsY[2]?*?2048);??
  • ????cbufY[3]?=?cv::saturate_cast<short>(coeffsY[3]?*?2048);??
  • ????cbufY[4]?=?cv::saturate_cast<short>(coeffsY[4]?*?2048);??
  • ????cbufY[5]?=?cv::saturate_cast<short>(coeffsY[5]?*?2048);??
  • ????cbufY[6]?=?cv::saturate_cast<short>(coeffsY[6]?*?2048);??
  • ????cbufY[7]?=?cv::saturate_cast<short>(coeffsY[7]?*?2048);??
  • ??
  • ????for?(int?i?=?0;?i?<?matDst1.cols;?++i)??
  • ????{??
  • ????????float?fx?=?(float)((i?+?0.5)?*?scale_x?-?0.5);??
  • ????????int?sx?=?cvFloor(fx);??
  • ????????fx?-=?sx;??
  • ??
  • ????????if?(sx?<?3)?{??
  • ????????????fx?=?0,?sx?=?3;??
  • ????????}??
  • ????????if?(sx?>=?matSrc.cols?-?5)?{??
  • ????????????fx?=?0,?sx?=?matSrc.cols?-?5;??
  • ????????}??
  • ??
  • ????????float?coeffsX[8];??
  • ??
  • ????????if?(fx?<?FLT_EPSILON)?{??
  • ????????????for?(?int?t?=?0;?t?<?8;?t++?)??
  • ????????????????coeffsX[t]?=?0;??
  • ????????????coeffsX[3]?=?1;??
  • ????????}?else?{??
  • ????????????float?sum?=?0;??
  • ????????????double?x0?=?-(fx?+?3)?*?CV_PI?*?0.25,?s0?=?sin(x0),?c0?=?cos(x0);??
  • ??
  • ????????????for?(int?t?=?0;?t?<?8;?++t)??
  • ????????????{??
  • ????????????????double?dx?=?-(fx?+?3?-t)?*?CV_PI?*?0.25;??
  • ????????????????coeffsX[t]?=?(float)((cs[t][0]?*?s0?+?cs[t][1]?*?c0)?/?(dx?*?dx));??
  • ????????????????sum?+=?coeffsX[t];??
  • ????????????}??
  • ??
  • ????????????sum?=?1.f?/?sum;??
  • ????????????for?(int?t?=?0;?t?<?8;?++t)??
  • ????????????????coeffsX[t]?*=?sum;??
  • ????????}??
  • ??
  • ????????short?cbufX[8];??
  • ????????cbufX[0]?=?cv::saturate_cast<short>(coeffsX[0]?*?2048);??
  • ????????cbufX[1]?=?cv::saturate_cast<short>(coeffsX[1]?*?2048);??
  • ????????cbufX[2]?=?cv::saturate_cast<short>(coeffsX[2]?*?2048);??
  • ????????cbufX[3]?=?cv::saturate_cast<short>(coeffsX[3]?*?2048);??
  • ????????cbufX[4]?=?cv::saturate_cast<short>(coeffsX[4]?*?2048);??
  • ????????cbufX[5]?=?cv::saturate_cast<short>(coeffsX[5]?*?2048);??
  • ????????cbufX[6]?=?cv::saturate_cast<short>(coeffsX[6]?*?2048);??
  • ????????cbufX[7]?=?cv::saturate_cast<short>(coeffsX[7]?*?2048);??
  • ??
  • ????????for?(int?k?=?0;?k?<?matSrc.channels();?++k)??
  • ????????{??
  • ????????????matDst1.at<cv::Vec3b>(j,?i)[k]?=?abs((matSrc.at<cv::Vec3b>(sy-3,?sx-3)[k]?*?cbufX[0]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy-2,?sx-3)[k]?*?cbufX[0]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx-3)[k]?*?cbufX[0]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy,?sx-3)[k]?*?cbufX[0]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx-3)[k]?*?cbufX[0]?*?cbufY[4]?+?matSrc.at<cv::Vec3b>(sy+2,?sx-3)[k]?*?cbufX[0]?*?cbufY[5]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+3,?sx-3)[k]?*?cbufX[0]?*?cbufY[6]?+?matSrc.at<cv::Vec3b>(sy+4,?sx-3)[k]?*?cbufX[0]?*?cbufY[7]?+??
  • ??
  • ????????????????matSrc.at<cv::Vec3b>(sy-3,?sx-2)[k]?*?cbufX[1]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy-2,?sx-2)[k]?*?cbufX[1]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx-2)[k]?*?cbufX[1]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy,?sx-2)[k]?*?cbufX[1]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx-2)[k]?*?cbufX[1]?*?cbufY[4]?+?matSrc.at<cv::Vec3b>(sy+2,?sx-2)[k]?*?cbufX[1]?*?cbufY[5]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+3,?sx-2)[k]?*?cbufX[1]?*?cbufY[6]?+?matSrc.at<cv::Vec3b>(sy+4,?sx-2)[k]?*?cbufX[1]?*?cbufY[7]?+??
  • ??
  • ????????????????matSrc.at<cv::Vec3b>(sy-3,?sx-1)[k]?*?cbufX[2]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy-2,?sx-1)[k]?*?cbufX[2]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx-1)[k]?*?cbufX[2]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy,?sx-1)[k]?*?cbufX[2]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx-1)[k]?*?cbufX[2]?*?cbufY[4]?+?matSrc.at<cv::Vec3b>(sy+2,?sx-1)[k]?*?cbufX[2]?*?cbufY[5]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+3,?sx-1)[k]?*?cbufX[2]?*?cbufY[6]?+?matSrc.at<cv::Vec3b>(sy+4,?sx-1)[k]?*?cbufX[2]?*?cbufY[7]?+??
  • ??
  • ????????????????matSrc.at<cv::Vec3b>(sy-3,?sx)[k]?*?cbufX[3]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy-2,?sx)[k]?*?cbufX[3]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx)[k]?*?cbufX[3]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy,?sx)[k]?*?cbufX[3]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx)[k]?*?cbufX[3]?*?cbufY[4]?+?matSrc.at<cv::Vec3b>(sy+2,?sx)[k]?*?cbufX[3]?*?cbufY[5]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+3,?sx)[k]?*?cbufX[3]?*?cbufY[6]?+?matSrc.at<cv::Vec3b>(sy+4,?sx)[k]?*?cbufX[3]?*?cbufY[7]?+??
  • ??
  • ????????????????matSrc.at<cv::Vec3b>(sy-3,?sx+1)[k]?*?cbufX[4]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy-2,?sx+1)[k]?*?cbufX[4]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx+1)[k]?*?cbufX[4]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy,?sx+1)[k]?*?cbufX[4]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx+1)[k]?*?cbufX[4]?*?cbufY[4]?+?matSrc.at<cv::Vec3b>(sy+2,?sx+1)[k]?*?cbufX[4]?*?cbufY[5]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+3,?sx+1)[k]?*?cbufX[4]?*?cbufY[6]?+?matSrc.at<cv::Vec3b>(sy+4,?sx+1)[k]?*?cbufX[4]?*?cbufY[7]?+??
  • ??
  • ????????????????matSrc.at<cv::Vec3b>(sy-3,?sx+2)[k]?*?cbufX[5]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy-2,?sx+2)[k]?*?cbufX[5]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx+2)[k]?*?cbufX[5]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy,?sx+2)[k]?*?cbufX[5]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx+2)[k]?*?cbufX[5]?*?cbufY[4]?+?matSrc.at<cv::Vec3b>(sy+2,?sx+2)[k]?*?cbufX[5]?*?cbufY[5]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+3,?sx+2)[k]?*?cbufX[5]?*?cbufY[6]?+?matSrc.at<cv::Vec3b>(sy+4,?sx+2)[k]?*?cbufX[5]?*?cbufY[7]?+??
  • ??
  • ????????????????matSrc.at<cv::Vec3b>(sy-3,?sx+3)[k]?*?cbufX[6]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy-2,?sx+3)[k]?*?cbufX[6]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx+3)[k]?*?cbufX[6]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy,?sx+3)[k]?*?cbufX[6]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx+3)[k]?*?cbufX[6]?*?cbufY[4]?+?matSrc.at<cv::Vec3b>(sy+2,?sx+3)[k]?*?cbufX[6]?*?cbufY[5]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+3,?sx+3)[k]?*?cbufX[6]?*?cbufY[6]?+?matSrc.at<cv::Vec3b>(sy+4,?sx+3)[k]?*?cbufX[6]?*?cbufY[7]?+??
  • ??
  • ????????????????matSrc.at<cv::Vec3b>(sy-3,?sx+4)[k]?*?cbufX[7]?*?cbufY[0]?+?matSrc.at<cv::Vec3b>(sy-2,?sx+4)[k]?*?cbufX[7]?*?cbufY[1]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy-1,?sx+4)[k]?*?cbufX[7]?*?cbufY[2]?+?matSrc.at<cv::Vec3b>(sy,?sx+4)[k]?*?cbufX[7]?*?cbufY[3]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+1,?sx+4)[k]?*?cbufX[7]?*?cbufY[4]?+?matSrc.at<cv::Vec3b>(sy+2,?sx+4)[k]?*?cbufX[7]?*?cbufY[5]?+??
  • ????????????????matSrc.at<cv::Vec3b>(sy+3,?sx+4)[k]?*?cbufX[7]?*?cbufY[6]?+?matSrc.at<cv::Vec3b>(sy+4,?sx+4)[k]?*?cbufX[7]?*?cbufY[7]?)?>>?22);//?4194304??
  • ????????}??
  • ????}??
  • }??
  • cv::imwrite("Lanczos_1.jpg",?matDst1);??
  • ??
  • cv::resize(matSrc,?matDst2,?matDst1.size(),?0,?0,?4);??
  • cv::imwrite("Lanczos_2.jpg",?matDst2); ?



  • opencv代碼:

    #include<core.h> #include<imgproc.h> using namespace cv; int main() {Mat src=imread("D:6.jpg");Mat dst;resize(src,dst,Size(src.cols/2,src.rows/2),0,0,0);imshow("shiyan",dst);waitKey(0);return 0; }

    總結

    以上是生活随笔為你收集整理的resize函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。