| 22 | 1/1 | 返回列表 |
| 查看: 2372 | 回復(fù): 21 | |||
[交流]
MFC 單文檔實現(xiàn)圖像縮放
|
|||
| 各位大哥,大姐,剛學(xué)VS2010,大概這樣的,我想在工具欄上加兩個按鈕,一個實現(xiàn)圖像放大,一個實現(xiàn)圖像縮小,按鈕有了,圖像縮放的代碼是啥啊?希望能賜教啊。 |
» 搶金幣啦!回帖就可以得到:
+3/1736
+5/1585
+2/134
+1/80
+1/36
+1/31
+1/27
+1/20
+1/14
+1/12
+1/9
+1/8
+1/7
+1/7
+1/6
+1/6
+1/5
+1/2
+1/1
+1/1
|
簡單的縮放方法是 線性插值,但是鋸齒效應(yīng)比較明顯,優(yōu)點是計算速度快; 還有一個雙線性插值,比線性插值要好,但是速度要稍微慢一些。 還有更加復(fù)雜的,像雙三次插值,基于保護邊緣的Bresenham插值等等。 最實用的還是雙線性插值,下面是以前我寫的代碼,你可以參考一下: /*********************************************** * 函數(shù)功能:實現(xiàn)圖像的縮放功能 * 輸入?yún)?shù):輸入原始圖像 unsigned char *pSrcImg * 原始圖像的寬度 int SrcWid 列 對應(yīng)坐標(biāo)J SrcJ * 原始圖像的高度 int SrcHgh 行 對應(yīng)坐標(biāo)I SrcI * 輸出縮放圖像 unsigned char *pDstImg * 縮放圖像的寬度 int DstWid * 縮放圖像的高度 int DstHgh * 返 回 值:函數(shù)運行成功 0 * 函數(shù)運行失敗 -1 ***********************************************/ int biLinear(unsigned char *pSrcImg, int SrcWid, int SrcHgh, unsigned char *pDstImg, int DstWid, int DstHgh) { /********************************************************* * 需要注意的事情: * 1.卷積時對邊界的處理,同時還要注意與MATLAB的坐標(biāo)區(qū)別 * 2.防止出現(xiàn)溢出,像素類型為unsigned char,防止存儲超過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; } // 計算縮放比例 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 ] |


| 22 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 284求調(diào)劑 +9 | Zhao anqi 2026-03-22 | 9/450 |
|
|---|---|---|---|---|
|
[考研] 327求調(diào)劑 +5 | prayer13 2026-03-23 | 5/250 |
|
|
[考研] 材料專碩英一數(shù)二306 +8 | z1z2z3879 2026-03-18 | 8/400 |
|
|
[考研] 291求調(diào)劑 +5 | 孅華 2026-03-22 | 5/250 |
|
|
[考研] 生物學(xué)調(diào)劑 +5 | Surekei 2026-03-21 | 5/250 |
|
|
[考研] 考研調(diào)劑 +4 | 來好運來來來 2026-03-21 | 4/200 |
|
|
[考研] 0856材料專碩353求調(diào)劑 +4 | NIFFFfff 2026-03-20 | 4/200 |
|
|
[考研] 085600材料與化工306 +4 | z1z2z3879 2026-03-21 | 4/200 |
|
|
[考研] 求調(diào)劑 +3 | 13341 2026-03-20 | 3/150 |
|
|
[考研] 求助 +5 | 夢里的無言 2026-03-21 | 6/300 |
|
|
[考研] 336求調(diào)劑 +5 | rmc8866 2026-03-21 | 5/250 |
|
|
[基金申請]
學(xué)校已經(jīng)提交到NSFC,還能修改嗎?
40+4
|
babangida 2026-03-19 | 9/450 |
|
|
[考研] 22 350 本科985求調(diào)劑,求老登收留 +3 | 李軼男003 2026-03-20 | 3/150 |
|
|
[考研] 材料工程(專)一志愿985 初試335求調(diào)劑 +3 | hiloiy 2026-03-17 | 4/200 |
|
|
[考研] 華東師范大學(xué)-071000生物學(xué)-293分-求調(diào)劑 +3 | 研究生何瑤明 2026-03-18 | 3/150 |
|
|
[考研] 材料學(xué)求調(diào)劑 +4 | Stella_Yao 2026-03-20 | 4/200 |
|
|
[考研] 一志愿中國海洋大學(xué),生物學(xué),301分,求調(diào)劑 +5 | 1孫悟空 2026-03-17 | 6/300 |
|
|
[考研] 一志愿福大288有機化學(xué),求調(diào)劑 +3 | 小木蟲200408204 2026-03-18 | 3/150 |
|
|
[考研] 材料工程專碩調(diào)劑 +5 | 204818@lcx 2026-03-17 | 6/300 |
|
|
[論文投稿] 有沒有大佬發(fā)小論文能帶我個二作 +3 | 增銳漏人 2026-03-17 | 4/200 |
|