最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)將圖片轉(zhuǎn)換為馬賽克效果的示例代碼

 更新時間:2023年01月14日 08:40:16   作者:編程小魚六六六  
這篇文章主要為大家詳細介紹了C++如何實現(xiàn)將圖片轉(zhuǎn)換為馬賽克效果,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解一下

這個程序?qū)D片轉(zhuǎn)換為馬賽克效果。

算法原理:求出每個小方塊內(nèi)所有像素的顏色平均值,然后用來設(shè)置為該小方塊的顏色。依次處理每個小方塊,即可實現(xiàn)馬賽克效果。

完整代碼如下

// 程序名稱:將圖片轉(zhuǎn)換為馬賽克效果
// 編譯環(huán)境:Visual C++ 6.0 / 2010,EasyX_20200727
//
#include <graphics.h>
#include <conio.h>
 
// 將圖片轉(zhuǎn)換為馬賽克效果
// 參數(shù):
//		pimg: 待處理的 IMAGE 對象指針
//		tilesize: 馬賽克的尺寸
//		startx: 馬賽克的平鋪起始位置 x 坐標(biāo)
//		starty: 馬賽克的平鋪起始位置 y 坐標(biāo)
void Mosaic(IMAGE *pimg, int tilesize, int startx, int starty)
{
	int	width	= pimg->getwidth();		// 圖像的寬
	int	height	= pimg->getheight();	// 圖像的高
	int	redsum;			// 紅色值的和
	int	greensum;		// 綠色值的和
	int	bluesum;		// 藍色值的和
	int	count;			// 每個小方塊內(nèi)的像素數(shù)量
	int	color;			// 每個像素的顏色
	int x, y, tx, ty;	// 循環(huán)變量
 
	// 獲取指向顯示緩沖區(qū)的指針
	DWORD* pMem = GetImageBuffer(pimg);
 
	// 求出左上角第一個方塊的坐標(biāo)
	startx = (startx % tilesize == 0 ? 0 : startx % tilesize - tilesize);
	starty = (starty % tilesize == 0 ? 0 : starty % tilesize - tilesize);
 
	// 處理每一個小方塊
	for (y = starty; y < height; y += tilesize)
		for (x = startx; x < width; x += tilesize)
		{
			// 清空累加值
			redsum = greensum = bluesum = count = 0;
 
			// 求小方塊的紅、綠、藍顏色值的和
			for (ty = min(y + tilesize, height) - 1; ty >= max(y, 0); ty--)
				for (tx = min(x + tilesize, width) - 1; tx >= max(x, 0); tx--)
				{
					color = pMem[ty * width + tx];
					redsum += GetRValue(color);
					greensum += GetGValue(color);
					bluesum += GetBValue(color);
					count++;
				}
 
			// 求紅、綠、藍顏色的平均值
 			redsum /= count;
			greensum /= count;
			bluesum /= count;
 
			// 設(shè)置小方塊內(nèi)的每個像素為平均顏色值
			color = RGB(redsum, greensum, bluesum);
			for (ty = min(y + tilesize, height) - 1; ty >= max(y, 0); ty--)
				for (tx = min(x + tilesize, width) - 1; tx >= max(x, 0); tx--)
					pMem[ty * width + tx] = color;
		}
}
 
// 主函數(shù)
void main()
{
	// 初始化繪圖環(huán)境
	initgraph(640, 480);
 
	// 獲取圖像
	IMAGE img;
	loadimage(&img, _T("c:\\test.jpg"));
 
	// 顯示原始圖像
	putimage(0, 0, &img);
	
	// 任意鍵執(zhí)行
	_getch();
 
	// 將圖片轉(zhuǎn)換為馬賽克效果
	Mosaic(&img, 10, 0, 0);
 
	// 顯示處理后的圖像
	putimage(0, 0, &img);
 
	// 任意鍵關(guān)閉繪圖環(huán)境
	_getch();
	closegraph();
}

根據(jù)這個代碼,再加上點動畫,還可以做出一些有趣的效果。

這里做一個例子,將前面代碼的以下兩行:

    // 將圖片轉(zhuǎn)換為馬賽克效果
    Mosaic(&img, 10, 0, 0);
 
    // 顯示處理后的圖像
    putimage(0, 0, &img);

修改為:

    IMAGE timg;
    for(int i = 2; i < 200; i++)
    {
        // 將圖片轉(zhuǎn)換為馬賽克效果
        timg = img;
        Mosaic(&timg, i, 320, 240);
 
        // 顯示處理后的圖像
        putimage(0, 0, &timg);
 
        Sleep(20);
    }

然后再執(zhí)行看看效果~~

到此這篇關(guān)于C++實現(xiàn)將圖片轉(zhuǎn)換為馬賽克效果的示例代碼的文章就介紹到這了,更多相關(guān)C++圖片轉(zhuǎn)馬賽克內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)隨機數(shù)生成的現(xiàn)代化封裝

    C++實現(xiàn)隨機數(shù)生成的現(xiàn)代化封裝

    在現(xiàn)代?C++?中,隨機數(shù)生成是許多程序設(shè)計中不可或缺的部分,例如游戲開發(fā)、算法設(shè)計、統(tǒng)計模擬等,本文將以一個封裝好的隨機工具類?Random?為例,深入剖析其功能的實現(xiàn)與使用,并引入相關(guān)知識,幫助讀者觸類旁通,掌握?C++?隨機數(shù)的核心技巧
    2024-11-11
  • 使用OpenGL繪制Bezier曲線

    使用OpenGL繪制Bezier曲線

    這篇文章主要為大家詳細介紹了使用OpenGL繪制Bezier曲線的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 解析c語言switch中break語句的具體作用

    解析c語言switch中break語句的具體作用

    以下是對c語言switch中break語句的作用進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-07-07
  • C語言數(shù)組應(yīng)用實現(xiàn)掃雷游戲

    C語言數(shù)組應(yīng)用實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了C語言數(shù)組應(yīng)用實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++ 中的單例模式(普通,2B,文藝)

    C++ 中的單例模式(普通,2B,文藝)

    這篇文章主要介紹C++ 中的單例模式寫法,主要包括普通,2B,文藝三種寫法,需要的朋友可以參考下
    2013-03-03
  • C語言中fgets和fscanf區(qū)別詳解

    C語言中fgets和fscanf區(qū)別詳解

    這篇文章主要介紹了C語言中fgets和fscanf區(qū)別詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • C語言實現(xiàn)企業(yè)員工管理系統(tǒng)開發(fā)

    C語言實現(xiàn)企業(yè)員工管理系統(tǒng)開發(fā)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)企業(yè)員工管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言實現(xiàn)學(xué)生檔案管理系統(tǒng)

    C語言實現(xiàn)學(xué)生檔案管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)生檔案管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++指針與引用的區(qū)別案例詳解

    C++指針與引用的區(qū)別案例詳解

    這篇文章主要介紹了C++指針與引用的區(qū)別案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • OpenCV使用稀疏光流實現(xiàn)視頻對象跟蹤的方法詳解

    OpenCV使用稀疏光流實現(xiàn)視頻對象跟蹤的方法詳解

    這篇文章主要為大家詳細介紹了OpenCV如何使用稀疏光流實現(xiàn)視頻對象跟蹤功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2023-02-02

最新評論

安西县| 乡宁县| 集安市| 资溪县| 德化县| 龙川县| 富平县| 武冈市| 忻州市| 邵武市| 宜良县| 会理县| 黑山县| 鹿泉市| 响水县| 文水县| 汝阳县| 连云港市| 驻马店市| 积石山| 城口县| 佳木斯市| 盖州市| 邹平县| 聊城市| 霍山县| 黄骅市| 屏边| 南通市| 莱芜市| 榆林市| 镇康县| 武威市| 繁昌县| 兴业县| 周口市| 游戏| 沂南县| 大悟县| 工布江达县| 岳普湖县|