亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pointtrans.cpp

?? 串口通信工程實例
?? CPP
字號:

/**************************************************************************
 *  文件名:PointTrans.cpp
 *
 *  圖像點運算API函數庫:
 *
 *  LinerTrans()		- 圖像線性變換
 *	WindowTrans()		- 圖像窗口變換
 *  GrayStretch()		- 圖像灰度拉伸
 *  InteEqualize()		-直方圖均衡
 *
 *************************************************************************/

#include "stdafx.h"
#include "PointTrans.h"
#include "DIBAPI.h"

#include <math.h>
#include <direct.h>

/*************************************************************************
 *
 * 函數名稱:
 *   LinerTrans()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *   FLOAT fA		    - 線性變換的斜率
 *   FLOAT fB           - 線性變換的截距
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行灰度的線性變換操作。
 *
 ************************************************************************/

BOOL WINAPI LinerTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, FLOAT fA, FLOAT fB)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 中間變量
	FLOAT	fTemp;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 線性變換
			fTemp = fA * (*lpSrc) + fB;
			
			// 判斷是否超出范圍
			if (fTemp > 255)
			{
				// 直接賦值為255
				*lpSrc = 255;
			}
			else if (fTemp < 0)
			{
				// 直接賦值為0
				*lpSrc = 0;
			}
			else
			{
				// 四舍五入
				*lpSrc = (unsigned char) (fTemp + 0.5);
			}
		}
	}
	
	// 返回
	return TRUE;

}

/*************************************************************************
 *
 * 函數名稱:
 *   ThresholdTrans()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *   BYTE  bThre	    - 閾值
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行閾值變換。對于灰度值小于閾值的象素直接設置
 * 灰度值為0;灰度值大于閾值的象素直接設置為255。
 *
 ************************************************************************/
BOOL WINAPI ThresholdTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bThre)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 判斷是否小于閾值
			if ((*lpSrc) < bThre)
			{
				// 直接賦值為0
				*lpSrc = 0;
			}
			else
			{
				// 直接賦值為255
				*lpSrc = 255;
			}
		}
	}
	
	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數名稱:
 *   WindowTrans()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *   BYTE  bLow		    - 窗口下限
 *   BYTE  bUp          - 窗口上限
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行窗口變換。只有在窗口范圍內的灰度保持不變,
 * 小于下限的象素直接設置灰度值為0;大于上限的象素直接設置灰度值為255。
 *
 ************************************************************************/
BOOL WINAPI WindowTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bLow, BYTE bUp)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 判斷是否超出范圍
			if ((*lpSrc) < bLow)
			{
				// 直接賦值為0
				*lpSrc = 0;
			}
			else if ((*lpSrc) > bUp)
			{
				// 直接賦值為255
				*lpSrc = 255;
			}
		}
	}
	
	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數名稱:
 *   GrayStretch()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *   BYTE bX1			- 灰度拉伸第一個點的X坐標
 *   BYTE bY1			- 灰度拉伸第一個點的Y坐標
 *   BYTE bX2			- 灰度拉伸第二個點的X坐標
 *   BYTE bY2			- 灰度拉伸第二個點的Y坐標
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行灰度拉伸。
 *
 ************************************************************************/
BOOL WINAPI GrayStretch(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bX1, BYTE bY1, BYTE bX2, BYTE bY2)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 灰度映射表
	BYTE	bMap[256];
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 計算灰度映射表
	for (i = 0; i <= bX1; i++)
	{
		// 判斷bX1是否大于0(防止分母為0)
		if (bX1 > 0)
		{
			// 線性變換
			bMap[i] = (BYTE) bY1 * i / bX1;
		}
		else
		{
			// 直接賦值為0
			bMap[i] = 0;
		}
	}
	for (; i <= bX2; i++)
	{
		// 判斷bX1是否等于bX2(防止分母為0)
		if (bX2 != bX1)
		{
			// 線性變換
			bMap[i] = bY1 + (BYTE) ((bY2 - bY1) * (i - bX1) / (bX2 - bX1));
		}
		else
		{
			// 直接賦值為bY1
			bMap[i] = bY1;
		}
	}
	for (; i < 256; i++)
	{
		// 判斷bX2是否等于255(防止分母為0)
		if (bX2 != 255)
		{
			// 線性變換
			bMap[i] = bY2 + (BYTE) ((255 - bY2) * (i - bX2) / (255 - bX2));
		}
		else
		{
			// 直接賦值為255
			bMap[i] = 255;
		}
	}
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 計算新的灰度值
			*lpSrc = bMap[*lpSrc];
		}
	}
	
	// 返回
	return TRUE;
}

/*************************************************************************
 *
 * 函數名稱:
 *   InteEqualize()
 *
 * 參數:
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數)
 *   LONG  lHeight      - 源圖像高度(象素數)
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數用來對圖像進行直方圖均衡。
 *
 ************************************************************************/
BOOL WINAPI InteEqualize(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 臨時變量
	LONG	lTemp;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 灰度映射表
	BYTE	bMap[256];
	
	// 灰度映射表
	LONG	lCount[256];
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 重置計數為0
	for (i = 0; i < 256; i ++)
	{
		// 清零
		lCount[i] = 0;
	}
	
	// 計算各個灰度值的計數
	for (i = 0; i < lHeight; i ++)
	{
		for (j = 0; j < lWidth; j ++)
		{
			lpSrc = (unsigned char *)lpDIBBits + lLineBytes * i + j;
			
			// 計數加1
			lCount[*(lpSrc)]++;
		}
	}
	
	// 計算灰度映射表
	for (i = 0; i < 256; i++)
	{
		// 初始為0
		lTemp = 0;
		
		for (j = 0; j <= i ; j++)
		{
			lTemp += lCount[j];
		}
		
		// 計算對應的新灰度值
		bMap[i] = (BYTE) (lTemp * 255 / lHeight / lWidth);
	}
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 計算新的灰度值
			*lpSrc = bMap[*lpSrc];
		}
	}
	
	// 返回
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影一区二区| 亚洲高清视频在线| 91麻豆国产福利精品| 亚洲欧美日韩小说| 欧美一区三区四区| 精品一区二区三区香蕉蜜桃| 国产精品久久久久天堂| 日韩视频一区在线观看| 成人性生交大片免费| 欧美少妇bbb| 亚洲欧美视频在线观看视频| 在线这里只有精品| 成人性生交大片免费看视频在线| 国产精品不卡一区二区三区| 欧美日韩日日摸| 国产iv一区二区三区| 麻豆国产精品777777在线| 国产精品福利在线播放| 久久网站热最新地址| 日本精品一区二区三区四区的功能| 日韩 欧美一区二区三区| 日韩一区在线看| 欧美国产综合色视频| 精品久久免费看| 欧美嫩在线观看| 欧美日韩黄色一区二区| 在线观看成人免费视频| av不卡免费电影| 成人福利电影精品一区二区在线观看| 日本不卡高清视频| 蜜桃一区二区三区在线观看| 亚洲福中文字幕伊人影院| 亚洲一区影音先锋| 亚洲高清不卡在线观看| 日韩成人伦理电影在线观看| 亚洲1区2区3区4区| 男男gaygay亚洲| 麻豆91在线播放| 久久精品国产精品亚洲红杏| 久久精品国产77777蜜臀| 国产乱一区二区| 99re这里都是精品| 色天天综合久久久久综合片| 欧美三级电影在线看| 欧美一区二区三区人| 久久久久久久久免费| 久久综合久久99| 日韩理论片网站| 奇米色777欧美一区二区| 国产成人免费视频一区| 欧美性色黄大片| 久久九九久久九九| 亚洲国产精品自拍| 不卡的电视剧免费网站有什么| 色天使色偷偷av一区二区| 日韩视频在线你懂得| 一区二区三区欧美在线观看| 毛片av一区二区三区| 一本色道久久综合亚洲精品按摩| 宅男噜噜噜66一区二区66| 亚洲欧美日韩成人高清在线一区| 美女精品自拍一二三四| 色婷婷综合中文久久一本| 中文字幕精品三区| 韩国视频一区二区| 日韩欧美在线网站| 日韩二区三区四区| 欧美乱熟臀69xxxxxx| 亚洲v中文字幕| 欧美制服丝袜第一页| 玉米视频成人免费看| 丰满白嫩尤物一区二区| 中文字幕精品一区二区精品绿巨人| 男女视频一区二区| 国产亚洲综合在线| 成人免费毛片片v| 国产精品女上位| 91在线免费播放| 一区二区三区四区视频精品免费| 91麻豆精东视频| 午夜欧美电影在线观看| 亚洲国产日产av| 久久av中文字幕片| 制服丝袜av成人在线看| 首页亚洲欧美制服丝腿| 制服丝袜亚洲网站| 国产一区视频网站| 亚洲欧洲在线观看av| 色婷婷狠狠综合| 久久99精品久久久久| 国产亚洲福利社区一区| 欧美在线小视频| 国产在线国偷精品免费看| 中日韩av电影| 欧美日韩在线一区二区| 丝袜a∨在线一区二区三区不卡| 91麻豆精品国产自产在线观看一区| 日日夜夜精品视频免费| 日韩精品影音先锋| 欧美亚州韩日在线看免费版国语版| 午夜久久电影网| 欧美激情一区在线| 欧美刺激脚交jootjob| 欧洲精品在线观看| 成人av一区二区三区| 精品亚洲成a人| 美女一区二区久久| 亚洲成av人综合在线观看| 亚洲精品美腿丝袜| 亚洲精品一二三区| 亚洲乱码一区二区三区在线观看| 久久久99精品免费观看| 欧美va亚洲va香蕉在线| 5566中文字幕一区二区电影| 欧美色综合影院| 欧美一区二区三级| 日韩欧美亚洲一区二区| 精品欧美一区二区三区精品久久| 欧美一区二区三区性视频| 欧美精品自拍偷拍动漫精品| 4438亚洲最大| 精品国产一区二区三区久久影院 | 色综合久久中文综合久久97| 99精品国产热久久91蜜凸| 波多野结衣视频一区| 91片在线免费观看| 91精品国产综合久久婷婷香蕉| 欧美午夜精品一区二区蜜桃| 91精品在线观看入口| 日韩欧美一区中文| 国产精品久久久久7777按摩 | 久久一区二区视频| 亚洲免费三区一区二区| 日韩电影在线免费| 不卡欧美aaaaa| 欧美一区二区三区人| 国产精品视频免费| 久久99精品久久久久久久久久久久 | 色婷婷国产精品久久包臀| 欧美一区二区三区婷婷月色| 国产丝袜欧美中文另类| 亚洲成人精品在线观看| 国产91在线看| 欧美精品一区二区久久婷婷| 亚洲第一主播视频| 不卡av在线免费观看| 日韩一区二区免费在线电影| 亚洲在线中文字幕| 成人免费视频app| 中文字幕免费不卡| 豆国产96在线|亚洲| 日韩美女视频在线| 五月婷婷激情综合| 91精品1区2区| 亚洲第一主播视频| 日本久久精品电影| 亚洲成人免费看| 美女精品自拍一二三四| 国产真实乱偷精品视频免| 欧美电影影音先锋| 日本va欧美va瓶| 欧美一级欧美三级| 日韩国产成人精品| 日韩一区二区高清| 久久69国产一区二区蜜臀| 久久先锋资源网| 国产·精品毛片| 国产精品区一区二区三| 国产成人av影院| 亚洲欧美在线aaa| 欧美电影影音先锋| 国产mv日韩mv欧美| 一区二区三区成人在线视频| 一本色道**综合亚洲精品蜜桃冫| 一区二区三区美女| 色欧美片视频在线观看在线视频| 亚洲精品第一国产综合野| 欧美一级艳片视频免费观看| 国产精品亚洲专一区二区三区| 亚洲精品精品亚洲| 久久先锋影音av| 欧美日韩一二三| 成人免费毛片高清视频| 日一区二区三区| 亚洲精品视频免费看| 26uuuu精品一区二区| 欧美日韩aaaaaa| 色老综合老女人久久久| 国产精品一区二区男女羞羞无遮挡| 亚洲欧美国产77777| 欧美激情一区不卡| 国产午夜精品一区二区三区嫩草 | 欧美性大战久久久| av电影在线观看不卡| 国产精品影视在线观看| 久久成人久久爱| 美女爽到高潮91| 免费高清在线一区| 日韩福利电影在线| 久久精品国产精品亚洲红杏|