| 22 | 1/1 | 返回列表 |
| 查看: 2373 | 回復(fù): 21 | |||
霸王曉金蟲(chóng) (著名寫(xiě)手)
|
[交流]
MFC 單文檔實(shí)現(xiàn)圖像縮放
|
||
| 各位大哥,大姐,剛學(xué)VS2010,大概這樣的,我想在工具欄上加兩個(gè)按鈕,一個(gè)實(shí)現(xiàn)圖像放大,一個(gè)實(shí)現(xiàn)圖像縮小,按鈕有了,圖像縮放的代碼是啥啊?希望能賜教啊。 |
» 搶金幣啦!回帖就可以得到:
+5/190
+1/83
+1/82
+1/63
+1/33
+1/32
+1/27
+1/25
+1/14
+1/12
+1/12
+1/10
+1/8
+1/8
+1/8
+1/7
+1/5
+1/4
+1/4
+1/3
銀蟲(chóng) (正式寫(xiě)手)
|
簡(jiǎn)單的縮放方法是 線性插值,但是鋸齒效應(yīng)比較明顯,優(yōu)點(diǎn)是計(jì)算速度快; 還有一個(gè)雙線性插值,比線性插值要好,但是速度要稍微慢一些。 還有更加復(fù)雜的,像雙三次插值,基于保護(hù)邊緣的Bresenham插值等等。 最實(shí)用的還是雙線性插值,下面是以前我寫(xiě)的代碼,你可以參考一下: /*********************************************** * 函數(shù)功能:實(shí)現(xiàn)圖像的縮放功能 * 輸入?yún)?shù):輸入原始圖像 unsigned char *pSrcImg * 原始圖像的寬度 int SrcWid 列 對(duì)應(yīng)坐標(biāo)J SrcJ * 原始圖像的高度 int SrcHgh 行 對(duì)應(yīng)坐標(biāo)I SrcI * 輸出縮放圖像 unsigned char *pDstImg * 縮放圖像的寬度 int DstWid * 縮放圖像的高度 int DstHgh * 返 回 值:函數(shù)運(yùn)行成功 0 * 函數(shù)運(yùn)行失敗 -1 ***********************************************/ int biLinear(unsigned char *pSrcImg, int SrcWid, int SrcHgh, unsigned char *pDstImg, int DstWid, int DstHgh) { /********************************************************* * 需要注意的事情: * 1.卷積時(shí)對(duì)邊界的處理,同時(shí)還要注意與MATLAB的坐標(biāo)區(qū)別 * 2.防止出現(xiàn)溢出,像素類(lèi)型為unsigned char,防止存儲(chǔ)超過(guò)255的值 ********************************************************/ float HghExp, WidExp ; // 保存行列的縮放值 int Si, Sj ; // 保存映射整數(shù)坐標(biāo) float p, q ; // 保存映射小數(shù)坐標(biāo) int s1, s2, s3, s4; int i, j, flag; if((NULL ==pSrcImg) || (NULL == pDstImg) || (SrcWid < 1) || (SrcHgh <1) || (DstWid < 1) || (DstHgh < 1)) { return -1; } // 計(jì)算縮放比例 HghExp = float(DstHgh) / float(SrcHgh); WidExp = float(DstWid) / float(SrcWid); // 插值公式:pDstImg(i,j) = (1 - p) * (1 - q) * pSrcImg(Si, Sj ) // + (1 - p) * q * pSrcImg(Si + 1, Sj ) // + p * (1 - q) * pSrcImg(Si, Sj + 1) // + p * q * pSrcImg(Si + 1, Sj + 1); for(i = 1 ; i < DstHgh-1; i++) { for(j = 1; j < DstWid-1 ; j++) { Si = int(i / HghExp); Sj = int(j / WidExp); p = i / HghExp - Si; q = j / WidExp - Sj; s1 = pSrcImg[(Si)*SrcWid + Sj ]; // pSrcImg(Si, Sj) s2 = pSrcImg[(Si + 1)*SrcWid + Sj ]; // pSrcImg(Si + 1, Sj) s3 = pSrcImg[(Si )*SrcWid + Sj+ 1 ]; // pSrcImg(Si, Sj + 1) s4 = pSrcImg[(Si+ 1 ) *SrcWid + Sj+ 1 ]; // pSrcImg(Si + 1, Sj + 1) flag = int((1-p)*(1-q)*s1 + (1-p)*q*s2 + p*(1-q)*s3 + p*q * s4 + 0.5); pDstImg[i*DstWid + j] = (flag > 255)? 255: flag; // 防止溢出 } } return 0; } [ Last edited by denghblzu9237 on 2012-7-31 at 18:53 ] |
金蟲(chóng) (著名寫(xiě)手)
木蟲(chóng) (正式寫(xiě)手)
金蟲(chóng) (正式寫(xiě)手)
至尊木蟲(chóng) (著名寫(xiě)手)
金蟲(chóng) (著名寫(xiě)手)
木蟲(chóng) (小有名氣)
木蟲(chóng) (小有名氣)
鐵桿木蟲(chóng) (正式寫(xiě)手)


| 22 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 一志愿國(guó)科過(guò)程所081700,274求調(diào)劑 +3 | 三水研0水立方 2026-03-23 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 269求調(diào)劑 +4 | 我想讀研11 2026-03-23 | 4/200 |
|
|
[考研] 一志愿武理材料工程348求調(diào)劑 +6 |  ̄^ ̄゜汗 2026-03-19 | 9/450 |
|
|
[考研] 352求調(diào)劑 +3 | 大米飯! 2026-03-22 | 3/150 |
|
|
[考研] 289求調(diào)劑 +7 | 懷瑾握瑜l 2026-03-20 | 7/350 |
|
|
[考研] 求調(diào)劑院校信息 +6 | CX 330 2026-03-21 | 6/300 |
|
|
[考研] 269專碩求調(diào)劑 +6 | 金恩貝 2026-03-21 | 6/300 |
|
|
[考研] 0856材料專碩353求調(diào)劑 +4 | NIFFFfff 2026-03-20 | 4/200 |
|
|
[考研] 286求調(diào)劑 +10 | Faune 2026-03-21 | 10/500 |
|
|
[考研] 286分人工智能專業(yè)請(qǐng)求調(diào)劑愿意跨考! +4 | lemonzzn 2026-03-17 | 8/400 |
|
|
[考研] 廣西大學(xué)材料導(dǎo)師推薦 +3 | 夏夏夏小正 2026-03-17 | 5/250 |
|
|
[考研] 278求調(diào)劑 +9 | 煙火先于春 2026-03-17 | 9/450 |
|
|
[考研] 302求調(diào)劑 +12 | 呼呼呼。。。。 2026-03-17 | 12/600 |
|
|
[考研] 材料學(xué)學(xué)碩080502 337求調(diào)劑-一志愿華中科技大學(xué) +4 | 順順順mr 2026-03-18 | 5/250 |
|
|
[考研] 一志愿天津大學(xué)化學(xué)工藝專業(yè)(081702)315分求調(diào)劑 +12 | yangfz 2026-03-17 | 12/600 |
|
|
[考研] 303求調(diào)劑 +5 | 睿08 2026-03-17 | 7/350 |
|
|
[考研] 299求調(diào)劑 +6 | △小透明* 2026-03-17 | 6/300 |
|
|
[考研] 22408 344分 求調(diào)劑 一志愿 華電計(jì)算機(jī)技術(shù) +4 | solanXXX 2026-03-20 | 4/200 |
|
|
[考研] 南京大學(xué)化學(xué)376求調(diào)劑 +3 | hisfailed 2026-03-19 | 6/300 |
|
|
[考研] 261求B區(qū)調(diào)劑,科研經(jīng)歷豐富 +3 | 牛奶很忙 2026-03-20 | 4/200 |
|