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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

图像的放大

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像的放大 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

根據(jù)書(shū)上理論基礎(chǔ)


圖像放大,比如原來(lái)是3*3的圖像,水平放大2倍,垂直放大2倍,那么原來(lái)的一個(gè)像素對(duì)應(yīng)的在新圖像中的4個(gè)像素,如圖


那么相應(yīng)的新,舊坐標(biāo)對(duì)應(yīng)如下:

//原坐標(biāo)(x0,y0)->新坐標(biāo)(x1,y1)int x0 = i;int y0 = j;int x1 = kx*i + ix;int y1 = ky*j + iy;

然后算法就很明了了,由于像素位大小改變了,所以需要?jiǎng)?chuàng)建一個(gè)位圖,然后寫(xiě)入新的像素位,對(duì)應(yīng)每一個(gè)舊的像素,寫(xiě)入4個(gè)新的像素(仍然要注意,每個(gè)像素由4個(gè)值組成)
算法如下:

//===============函數(shù)定義===================== //圖像的放大 //kx水平放大倍數(shù),ky為垂直放大倍數(shù) void magnify(HDC hdc, HDC hMemDC, HBITMAP hBitmap, int Width, int Heigh,int kx,int ky) {BITMAP bm;GetObject(hBitmap, sizeof(bm), &bm);int WidthRow = bm.bmWidthBytes;//原位圖的字節(jié)寬(即原位圖的每行字節(jié)數(shù))//獲取原位圖的像素位BYTE *Pixel = new BYTE[WidthRow*Heigh];GetBitmapBits(hBitmap, WidthRow*Heigh, (LPVOID)Pixel);if (kx < 1 || ky < 1)exit(0);BYTE *newPixel = new BYTE[kx*ky*WidthRow*Heigh];//存放新的像素位memset(newPixel,255,kx*ky*WidthRow*Heigh*sizeof(BYTE));//圖像放大,for (int j = 0; j <Heigh; j++)//行for (int i = 0; i < Width; i++)//列{//將原圖中j行i列處像素復(fù)制到新圖中的ky*j行kx*i列附近的kx*ky個(gè)像素for(int ix=0;ix<kx;ix++)for (int iy = 0; iy < ky; iy++){//原坐標(biāo)(x0,y0)->新坐標(biāo)(x1,y1)int x0 = i;int y0 = j;int x1 = kx*i + ix;int y1 = ky*j + iy;//每4個(gè)為一個(gè)像素位for (int k = 0; k <4; k++){//新位圖寬為kx*WidthnewPixel[y1*kx*WidthRow + 4 * x1 + k] =Pixel[y0*WidthRow + 4 * x0 + k];}}}//創(chuàng)建一個(gè)新的位圖HBITMAP hNewBitmap = CreateCompatibleBitmap(hdc,kx*Width,ky*Heigh);SelectObject(hMemDC, hNewBitmap);//選進(jìn)內(nèi)存DCSetBitmapBits(hNewBitmap, kx*ky*WidthRow*Heigh, newPixel);BitBlt(hdc, 0, 0, kx*Width, ky*Heigh, hMemDC, 0, 0, SRCCOPY);DeleteObject(hNewBitmap);delete[] Pixel;delete[] newPixel; }

效果如下(cx為水平放大倍數(shù),cy為垂直放大倍數(shù))
cx=1,cy=3

cx=1,cy=2

cx=2,cy=2


沒(méi)問(wèn)題的,但是看書(shū)上提供的代碼,還是原來(lái)的問(wèn)題,失真了,沒(méi)處理好像素

縮小與放大差不多,同理

說(shuō)實(shí)話,這本書(shū)不怎么好,作者并沒(méi)有完全實(shí)現(xiàn)出來(lái),不過(guò)根據(jù)書(shū)上提供的算法理論基礎(chǔ),自己動(dòng)手實(shí)現(xiàn)出來(lái),才是最重要的,也能提高自己編碼能力,要不斷學(xué)習(xí),持之以恒,共勉

總結(jié)

以上是生活随笔為你收集整理的图像的放大的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。