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

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

?? bmpdisplayview.cpp

?? 用VC編寫的基于K-means的車牌識別程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// BmpDisplayView.cpp : implementation of the CBmpDisplayView class
//

#include "stdafx.h"
#include "BmpDisplay.h"
#include "BmpDisplayDoc.h"
#include "BmpDisplayView.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBmpDisplayView

IMPLEMENT_DYNCREATE(CBmpDisplayView, CView)

BEGIN_MESSAGE_MAP(CBmpDisplayView, CView)
	//{{AFX_MSG_MAP(CBmpDisplayView)
	ON_WM_PAINT()
	ON_COMMAND(ID_RGBTOGRAY, OnRgbtogray)
	ON_COMMAND(ID_junhenghua, Onjunhenghua)
	ON_COMMAND(ID_BianYuanJianChe, OnBianYuanJianChe)
	ON_COMMAND(ID_QYQD, OnQyqd)
	ON_COMMAND(ID_EZBZ, OnEzbz)
	ON_COMMAND(ID_HXQY, OnHxqy)
	ON_COMMAND(ID_JQDW, OnJqdw)
	ON_COMMAND(IDR_JLFG, OnJlfg)
	ON_COMMAND(IDR_CLDW, OnCldw)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBmpDisplayView construction/destruction

CBmpDisplayView::CBmpDisplayView()
{
	useflag=true;
	jflag=false;

}

CBmpDisplayView::~CBmpDisplayView()
{
}

BOOL CBmpDisplayView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CBmpDisplayView drawing

void CBmpDisplayView::OnDraw(CDC* pDC)
{
	CBmpDisplayDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CBmpDisplayView printing

BOOL CBmpDisplayView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CBmpDisplayView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CBmpDisplayView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CBmpDisplayView diagnostics

#ifdef _DEBUG
void CBmpDisplayView::AssertValid() const
{
	CView::AssertValid();
}

void CBmpDisplayView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CBmpDisplayDoc* CBmpDisplayView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CBmpDisplayDoc)));
	return (CBmpDisplayDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CBmpDisplayView message handlers




void CBmpDisplayView::OnPaint() //顯示處理效果
{
	RECT rect;
	CString filename;
	CPaintDC dc(this); 
	CBmpDisplayDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	GetClientRect(&rect);
	int ox=(int)rect.left;
	int oy=(int)rect.bottom;
	if((pDoc->flag==1)&&(pDoc->yflag==0))
	{
	SetDIBitsToDevice(dc.m_hDC ,50,50,pDoc->bi.biWidth,pDoc->bi.biHeight,
		0,0,0,pDoc->bi.biHeight,pDoc->lpBuf ,pDoc->pbi ,DIB_RGB_COLORS);
	}
	if(pDoc->yflag==1)
	{
	SetDIBitsToDevice(dc.m_hDC ,50,50 ,pDoc->bi.biWidth,pDoc->bi.biHeight,
		0,0,0,pDoc->bi.biHeight,pDoc->ylpBuf ,pDoc->pbi ,DIB_RGB_COLORS);
    
	}
   
	if(pDoc->zflag==1)
	{
  
       StretchDIBits(dc.m_hDC,150,pDoc->bi.biHeight+120,pDoc->newLbl ,pDoc->newLbh,
	   pDoc->newLbpx,pDoc->newLbpy ,pDoc->newLbl,pDoc->newLbh,
       pDoc->zlpBuf ,pDoc->pbi,DIB_RGB_COLORS,SRCCOPY);
	   if(diedai>0)
	   {
	   dc.TextOut(70,pDoc->bi.biHeight+120,"分類結果:");
       if(pDoc->cflag==1)
	   {
	   dc.TextOut(300,pDoc->bi.biHeight+120,"迭代次數:");
	   CString s="";
	   s.Format("%d",diedai);
	   dc.TextOut(380,pDoc->bi.biHeight+120,s);
	   }
	   }
	}
   
   
  
   Invalidate(FALSE);
}


void CBmpDisplayView::OnRgbtogray() //彩色轉成灰度
{
	BYTE *p_data;
	int width,height,Dibwidth;
	CBmpDisplayDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	p_data=pDoc->lpBuf ;
	height=pDoc->bi.biHeight;
	width=pDoc->bi.biWidth ;
    Dibwidth=pDoc->Dibwidth;
	LPBYTE temp=new BYTE[height*Dibwidth];
	memcpy(temp,p_data,height*Dibwidth);
	pDoc->ylpBuf=temp;
	if(pDoc->grayflag==0)
	{
	for(int s=0;s<256;s++)
		pDoc->huidu[s]=0;
	for(int i=0;i<height;i++)
		for(int j=0;j<Dibwidth;j+=3)
		{
			BYTE *pbyBlue=p_data++;
			BYTE *pbyGreen=p_data++;
			BYTE *pbyRed=p_data++;
			BYTE r=*pbyRed;
			BYTE g=*pbyGreen;
			BYTE b=*pbyBlue;
           unsigned char gray=(unsigned char)(0.31*r+0.59*g+0.11*b);
           *pbyBlue=*pbyGreen=*pbyRed=gray;
		   pDoc->huidu[gray]++;
		  
		}

	for(  i=0;i<256;i++)
	{
		(pDoc->tongji [i])=(pDoc->huidu[i])/(height*width*1.0f);
	}
		pDoc->grayflag=1;
	}
   
}



void CBmpDisplayView::Onjunhenghua() //圖像均衡化
{
	BYTE *p_data;
	int width,height,Dibwidth;
	float temp[256];
	int nr[256];
	CBmpDisplayDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	p_data=pDoc->lpBuf ;
	height=pDoc->bi.biHeight;
	width=pDoc->bi.biWidth ;
    Dibwidth=pDoc->Dibwidth;
	int gmin=40;
	int gmax=245;
	for(int i=0;i<256;i++)
	{
		if(i==0)
		{
         temp[0]=pDoc->tongji[0];
		}
		else
		{
		temp[i]=temp[i-1]+pDoc->tongji[i];
		}

		nr[i]=(int)(255.0f*temp[i]+0.5f);
	}
    for(int s=0;s<256;s++)
		pDoc->huidu[s]=0;
		for(i=0;i<height;i++)
		for(int j=0;j<Dibwidth;j+=3)
		{
			BYTE *pbyBlue=p_data++;
			BYTE *pbyGreen=p_data++;
			BYTE *pbyRed=p_data++;
			int r=*pbyRed;
			BYTE g=*pbyGreen;
			BYTE b=*pbyBlue;
            unsigned gray=r;
				if((int)gray<gmin)
				gray=0;
			else
				if((int)gray>gmax)
					gray=255;
				else
					gray=abs(255*(gray-gmin)/(gmax-gmin));
           *pbyBlue=*pbyGreen=*pbyRed=gray;
		   pDoc->huidu[gray]++;
		  
		}
    
pDoc->grayflag=1;

}

void CBmpDisplayView::OnBianYuanJianChe() //基于邊緣檢測
{
    BYTE *p_data;
	int width,height,Dibwidth;
	int gray;	
	CBmpDisplayDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	p_data=pDoc->lpBuf ;
	height=pDoc->bi.biHeight;
	width=pDoc->bi.biWidth ;
    Dibwidth=pDoc->Dibwidth;
	LPBYTE temp=new BYTE[height*Dibwidth];
	memcpy(temp,p_data,height*Dibwidth);
    LPBYTE temp2=new BYTE[height*Dibwidth];
	memcpy(temp2,p_data,height*Dibwidth);
	vlpBuf=p_data;
  	memcpy(temp,p_data,height*Dibwidth);

	int vsobel[3][3]={{1,0,-1},{2,0,-2},{1,0,-1}};
	for(int i=1;i<height-1;i++)
		for(int j=1;j<width-1;j++)
		{ gray=0;
			for(int s=-1;s<=1;s++)
				for(int t=-1;t<=1;t++)
				{
					gray=gray+temp[(i+s)*Dibwidth+(j+t)*3]*vsobel[s+1][t+1];
				}
		  gray=abs(gray);
		    if(gray>255)
			   gray=255;
		   else
			   gray=(int)(gray+0.5);
		  temp2[i*Dibwidth+j*3]=gray;
		  temp2[i*Dibwidth+j*3+1]=gray;
          temp2[i*Dibwidth+j*3+2]=gray;
		}
  
    pDoc->rlpBuf=temp2;
	delete temp;
	pDoc->rflag=1;
	
}



void CBmpDisplayView::OnEzbz() //圖像二值化
{
BYTE *p_data;
	int width,height,Dibwidth;
	int gray;
	CBmpDisplayDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	p_data=pDoc->rlpBuf;
	height=pDoc->bi.biHeight;
	width=pDoc->bi.biWidth ;
    Dibwidth=pDoc->Dibwidth;
	LPBYTE temp=new BYTE[height*Dibwidth];
	
	for(int i=1;i<height-1;i++)
		for(int j=1;j<width-1;j++)
		{
			gray=p_data[i*Dibwidth+j*3];
			if(gray>60)
			{	temp[i*Dibwidth+j*3+1]=temp[i*Dibwidth+j*3+2]=temp[i*Dibwidth+j*3]=255;
			    EZ[i][j]=1;
			}
		else
		{
			temp[i*Dibwidth+j*3+1]=temp[i*Dibwidth+j*3+2]=temp[i*Dibwidth+j*3]=0;
            EZ[i][j]=0;
		}
		}
pDoc->rlpBuf=temp;
pDoc->rflag=1;	
}

void CBmpDisplayView::OnHxqy() //檢測候選區域并二值化
{
    int mj=0;
    int yxmj=0;
    BYTE *p_data;
	int width,height,Dibwidth;
	int gray;
	int h[720];
	int v[720];
	CBmpDisplayDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	p_data=pDoc->rlpBuf ;
	height=pDoc->bi.biHeight;
	width=pDoc->bi.biWidth ;
    Dibwidth=pDoc->Dibwidth;
	LPBYTE temp=new BYTE[height*Dibwidth];
	memcpy(temp,p_data,height*Dibwidth);
	for(int i=0;i<720;i++)
		h[i]=0;
    for( i=0;i<height*5/6;i=i+3)
	{
	 for(int j=1;j<(width-1);j++)
	 {
	  if((EZ[i][j]==1))
		  mj++;
	  if((EZ[i][j]==0)&&(mj<=9)&&(mj>=5))
	  {
		mj=0;
		yxmj++;
	  }
	  
	 }
     
	if((yxmj>6))
	h[i]=yxmj;
	mj=0;
	yxmj=0;
	}
	for(i=1;i<height-1;i++)
		if(h[i]==0)
           for(int s=1;s<width-1;s++)
		   {
			   temp[i*Dibwidth+s*3+1]=temp[i*Dibwidth+s*3+2]=temp[i*Dibwidth+s*3]=0;
		   }
	int hs=0;
	i=0;
	while((hs<=7)&&(i<=height-1))
	{
		if(h[i]!=0)
			hs++;
		i++;
	}
if(i<=height-1)
	for(int s=i;s<height-1;s++)
	 for(int j=1;j<width-1;j++)
		   {
			   temp[s*Dibwidth+j*3+1]=temp[s*Dibwidth+j*3+2]=temp[s*Dibwidth+j*3]=0;
			   for(int t=i-1;t<600;t++)
			   h[t]=0;
		   }
    delete temp;
	LPBYTE temp3=new BYTE[height*Dibwidth];
	memset(temp3,255,height*Dibwidth);
	int pixel[4];
	BYTE *vlpdata;
	vlpdata=vlpBuf;
	for( i=0;i<height-1;i++)
		for(int j=0;j<width-1;j++)
		{ 
			pixel[0]=vlpdata[i*Dibwidth+j*3];
			pixel[1]=vlpdata[i*Dibwidth+(j+1)*3];
			pixel[2]=vlpdata[(i+1)*Dibwidth+j*3];
			pixel[3]=vlpdata[(i+1)*Dibwidth+(j+1)*3];
			temp3[i*Dibwidth+j*3]=(int)sqrt((pixel[0]-pixel[3])
			*(pixel[0]-pixel[3])+(pixel[1]-pixel[2])*(pixel[1]-pixel[2]));
			temp3[i*Dibwidth+j*3+1]=temp3[i*Dibwidth+j*3+2]=temp3[i*Dibwidth+j*3];

		}
	for( i=1;i<width-1;i++)
		for(int j=1;j<height-1;j++)
		{
			gray=temp3[j*Dibwidth+i*3];
			if(gray>60)
			{	temp3[j*Dibwidth+i*3+1]=temp3[j*Dibwidth+i*3+2]=temp3[j*Dibwidth+i*3]=255;
			    vEZ[i][j]=1;
			}
		else
		{
			temp3[j*Dibwidth+i*3+1]=temp3[j*Dibwidth+i*3+2]=temp3[j*Dibwidth+i*3]=0;
            vEZ[i][j]=0;
		}
		}
	mj=0;
	yxmj=0;
  for( i=0;i<720;i++)
		v[i]=0;
    for( i=0;i<width-1;i++)
	{
	 for(int j=1;j<height-1;j++)
	 {
	  if((vEZ[i][j]==1))
	 	  mj++;
	  if((vEZ[i][j]==0)&&(mj<=10)&&(mj>=1))
      {
		  for(int s=j-mj;s<=j;s++)
          temp3[s*Dibwidth+i*3+1]=temp3[s*Dibwidth+i*3+2]=temp3[s*Dibwidth+i*3]=0;
		  mj=0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品在线观看免费| 色综合久久久久综合体| 欧美久久一二三四区| 日韩午夜激情av| 中文字幕在线不卡视频| 久久精品国产亚洲5555| 在线观看视频一区| 国产精品久久久久影院| 精品亚洲国产成人av制服丝袜| 在线亚洲精品福利网址导航| 国产亚洲精品久| 久久精品国产999大香线蕉| 在线这里只有精品| 中文成人av在线| 国产麻豆精品视频| 日韩精品一区二区三区视频在线观看| 亚洲激情在线播放| 99精品一区二区| 国产精品无人区| 国产高清久久久| 欧美一级二级三级蜜桃| 污片在线观看一区二区| 91福利在线播放| 亚洲精品中文在线影院| 91偷拍与自偷拍精品| 亚洲欧洲三级电影| www.亚洲人| 中文字幕制服丝袜一区二区三区 | 亚洲免费看黄网站| 成人av在线影院| 国产精品拍天天在线| 国产成人av电影| 欧美极品xxx| av亚洲产国偷v产偷v自拍| 国产精品午夜春色av| www.日韩av| 亚洲美女在线国产| 欧美三级欧美一级| 日韩中文字幕av电影| 日韩欧美一级二级| 国产综合久久久久影院| 国产亚洲欧美激情| av男人天堂一区| 一区二区三区欧美在线观看| 欧美亚洲高清一区| 日韩不卡手机在线v区| 日韩欧美国产综合在线一区二区三区| 青青青伊人色综合久久| 欧美一三区三区四区免费在线看| 蜜臀va亚洲va欧美va天堂| 精品第一国产综合精品aⅴ| 国产乱码精品一区二区三区忘忧草 | 国产suv精品一区二区三区| 亚洲国产精品v| 色天天综合色天天久久| 午夜免费久久看| 久久毛片高清国产| 97久久精品人人做人人爽| 亚洲一区二区三区四区五区黄 | 日韩一区二区三区电影| 国产一区二三区| 亚洲男人的天堂在线观看| 在线观看91精品国产麻豆| 国产精品一级黄| 一区二区成人在线| 久久男人中文字幕资源站| 色综合久久六月婷婷中文字幕| 日本中文字幕一区| 国产精品超碰97尤物18| 日韩欧美亚洲一区二区| 91在线观看成人| 久久福利资源站| 亚洲综合自拍偷拍| 久久人人97超碰com| 欧美在线综合视频| 国产乱色国产精品免费视频| 亚洲午夜电影网| 国产日本亚洲高清| 欧美一区二区在线视频| av福利精品导航| 精品一区二区免费看| 亚洲一区二区三区精品在线| ww亚洲ww在线观看国产| 欧美日韩另类国产亚洲欧美一级| 国产69精品一区二区亚洲孕妇| 亚洲v中文字幕| 成人免费一区二区三区在线观看| 欧美成人在线直播| 91美女在线观看| 国产99久久久国产精品| 免费观看在线综合色| 亚洲电影视频在线| 综合在线观看色| 国产三级精品视频| 欧美一级欧美三级| 欧美人与禽zozo性伦| 色女孩综合影院| 97se亚洲国产综合自在线观| 国产米奇在线777精品观看| 性做久久久久久久免费看| 亚洲欧洲日产国码二区| 国产日韩高清在线| 久久久久久久综合日本| 欧美mv和日韩mv的网站| 日韩欧美一区二区不卡| 制服丝袜在线91| 91精品国产麻豆| 337p亚洲精品色噜噜| 制服丝袜激情欧洲亚洲| 欧美精品高清视频| 欧美二区在线观看| 欧美一区二区免费视频| 7777精品伊人久久久大香线蕉经典版下载 | 一区二区三区在线播| 亚洲欧美一区二区视频| 国产精品视频线看| 久久综合九色综合97_久久久 | 美女视频免费一区| 麻豆精品在线视频| 精品一区二区久久久| 国内精品久久久久影院色| 国产在线日韩欧美| 丁香婷婷综合激情五月色| 高清不卡在线观看| 成人av网站免费观看| 成人黄色网址在线观看| 91丨国产丨九色丨pron| 欧洲精品一区二区| 91精品国产综合久久久久久漫画| 69堂精品视频| 国产亚洲精品bt天堂精选| 中文字幕巨乱亚洲| 亚洲黄色av一区| 日本女人一区二区三区| 精品午夜一区二区三区在线观看| 国产成人综合在线| 91麻豆精品秘密| 欧美久久婷婷综合色| wwwwww.欧美系列| 中文字幕一区二区三中文字幕 | 久久久久久久久久久久久女国产乱| 精品1区2区在线观看| 中文字幕亚洲不卡| 亚洲成人综合在线| 国产一区二区三区日韩| 91丨porny丨首页| 欧美一区二区二区| 午夜av一区二区三区| 老司机精品视频导航| 成人av网址在线| 在线综合+亚洲+欧美中文字幕| 久久综合色鬼综合色| 亚洲欧洲美洲综合色网| 爽好久久久欧美精品| 国产成人无遮挡在线视频| 波多野结衣亚洲| 欧美一级欧美三级在线观看| 国产精品乱码人人做人人爱| 日韩专区中文字幕一区二区| 成人一区二区视频| 欧美精品v日韩精品v韩国精品v| 欧美激情一区二区三区蜜桃视频 | 国产日韩欧美一区二区三区综合| 亚洲欧美日韩电影| 国产精品一线二线三线| 欧美日韩一区二区三区四区 | 日韩欧美一级二级三级久久久| 中文字幕一区二区三区乱码在线| 日本成人在线看| 色先锋资源久久综合| 久久久精品日韩欧美| 日韩精品一级二级| 色婷婷一区二区| 国产色产综合色产在线视频| 日本vs亚洲vs韩国一区三区二区 | 久久99日本精品| 欧美日韩久久久久久| 中文字幕亚洲不卡| 日韩激情中文字幕| 99re这里都是精品| 久久97超碰国产精品超碰| 波多野结衣在线一区| 精品久久99ma| 日本一区中文字幕| 欧美日韩在线精品一区二区三区激情 | 欧美激情一区二区三区不卡| 久久99久国产精品黄毛片色诱| 欧美在线视频不卡| 亚洲老妇xxxxxx| 99久久精品一区二区| 国产精品久99| 成人免费av资源| 国产精品毛片无遮挡高清| 国产精品一区免费视频| 2023国产精品自拍| 国产精品一区二区在线看| 精品国内二区三区| 韩日精品视频一区| 欧美成人午夜电影| 精品一区二区久久久|