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

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

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

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

算法原理:求出每個(gè)小方塊內(nèi)所有像素的顏色平均值,然后用來(lái)設(shè)置為該小方塊的顏色。依次處理每個(gè)小方塊,即可實(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 對(duì)象指針
//		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;		// 藍(lán)色值的和
	int	count;			// 每個(gè)小方塊內(nèi)的像素?cái)?shù)量
	int	color;			// 每個(gè)像素的顏色
	int x, y, tx, ty;	// 循環(huán)變量
 
	// 獲取指向顯示緩沖區(qū)的指針
	DWORD* pMem = GetImageBuffer(pimg);
 
	// 求出左上角第一個(gè)方塊的坐標(biāo)
	startx = (startx % tilesize == 0 ? 0 : startx % tilesize - tilesize);
	starty = (starty % tilesize == 0 ? 0 : starty % tilesize - tilesize);
 
	// 處理每一個(gè)小方塊
	for (y = starty; y < height; y += tilesize)
		for (x = startx; x < width; x += tilesize)
		{
			// 清空累加值
			redsum = greensum = bluesum = count = 0;
 
			// 求小方塊的紅、綠、藍(lán)顏色值的和
			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++;
				}
 
			// 求紅、綠、藍(lán)顏色的平均值
 			redsum /= count;
			greensum /= count;
			bluesum /= count;
 
			// 設(shè)置小方塊內(nèi)的每個(gè)像素為平均顏色值
			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ù)這個(gè)代碼,再加上點(diǎn)動(dòng)畫,還可以做出一些有趣的效果。

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

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

相關(guān)文章

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

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

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

    使用OpenGL繪制Bezier曲線

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

    解析c語(yǔ)言switch中break語(yǔ)句的具體作用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

乌审旗| 蚌埠市| 息烽县| 乌拉特前旗| 吴堡县| 行唐县| 新巴尔虎右旗| 惠州市| 韩城市| 建阳市| 天津市| 郸城县| 通江县| 潞西市| 年辖:市辖区| 阜康市| 孟州市| 兰溪市| 泾川县| 铁力市| 东明县| 台南市| 沭阳县| 达孜县| 庆云县| 隆昌县| 和林格尔县| 岑溪市| 炎陵县| 曲周县| 靖远县| 张掖市| 巴林左旗| 芒康县| 额尔古纳市| 长乐市| 许昌县| 泸水县| 平罗县| 合山市| 康平县|