⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image.h

📁 车牌识别(改定位)武汉理工大学
💻 H
字号:
// Image.h: interface for the CImage class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_IMAGE_H__592ED8F2_7604_4C30_A3AD_E5D235A43EB3__INCLUDED_)
#define AFX_IMAGE_H__592ED8F2_7604_4C30_A3AD_E5D235A43EB3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "afxtempl.h"
#ifndef VLPCLASS
#define  VLPCLASS __declspec(dllexport)
#endif
#ifndef VLPAPI
#define  VLPAPI __declspec(dllexport)
#endif

#define WIDTHBYTES(i) (((i)+31)/32*4)
//插值方法
#define NEAREST		1
#define BILINEAR	2
#define BICUBIC		3
VLPAPI BOOL GetOvlap(CRect &rcOut,CRect rcIn1,CRect rcIn2);
VLPAPI CString GetIntToString(int *pIn,int Num);
VLPAPI void RunVLP();
VLPAPI int Max(int a, int b, int c);
VLPAPI int Min(int a, int b, int c);
class VLPCLASS CImage  
{
public:
	BOOL GetLiantong(CList<int,int> &ListNum,CList<CRect,CRect> &ListRect,CImage &ImgOut, BYTE byVal);
	//初始化
	CImage();
	CImage(CImage &Source);
	CImage& operator =(CImage &Source);
	BOOL Create(CSize szImg,BOOL bRGB);
	virtual BOOL Load(CString strPath);//从文件读取
	BOOL Draw(CDC* pDC, CPoint origin, CSize size,BOOL bStretch=FALSE,BOOL bCentre=TRUE);//显示
	void Detroy();
	virtual ~CImage();
public://操作
	//腐蚀
	void Erosion(int nVal=255);
	//膨胀
	void Dilation();
	BOOL Thinner(CImage &ImgOut);
	BOOL Hough(CImage &ImgOut);
	BOOL ModifyGTwo(CImage &ImgOut,CImage &ImgTwo,int dis);
	//直方均衡
	void HistogramEqualization();
	//RGB转化为灰度图象,结果保存在ImgGray;
	BOOL Rgb2Gray(CImage &ImgGray,double dR,double dG,double dB);
	//CSize szGrid模板大小
	BOOL MaxMinGrid(CImage &ImgOut,CSize szGrid,double * pPara);
	BOOL MaxMinMinusGrid(CImage &ImgOut, CSize szGrid, double *pPara);
	BOOL AvgGrid(CImage &ImgOut,CSize szGrid,double * pPara);
	//以百分之多少作为域值,bReverse=FALSE时>dThreld*255时为255
	BOOL Threold1(CImage &ImgOut, CImage &Template4, CImage &Template3, int pos1, int min,BOOL bReverse,double ratio);
	BOOL Threthold(CImage &ImgOut,BYTE dThretd,BOOL bReverse=FALSE);
	BOOL GetChePaiRect(CImage &ImgOut,CImage &ImgGray,CList<CRect,CRect>& rcChePaiList);
	//从原图剪切出一个区域
	BOOL CutFromImg(CImage &ImgOut,CRect rcImg);
	//切割文字
	BOOL CutText(CList<CImage,CImage &> &ImgOutList,BOOL bBlackText);
public: //属性
	int GetWidth();
	int GetHeight();
	BOOL IsRGB();
public:	
	BOOL RectifyAB(CImage &ImgOut,double dA[2],double dB[2],BYTE byFill=255,CPoint ptOffset=CPoint(0,0),CImage * pImgOrg=NULL,BOOL bGray=TRUE);
	BOOL Rotate(CImage& imOut,double beta,BYTE byFill);
	BOOL CutTextByModel(CList<CImage,CImage&> &ListText);
	CString GetColorType(BOOL &bBlackText);
	int GetHVContinue(BYTE byTextVal,BOOL bVorH,int nStart1);
	BOOL BmpDataToImg(BYTE *pData,int nSize,int nWidth,int nHeight);
	BOOL GrayStretch(CImage &ImgOut,int pos,int min);
	BOOL DeleteHV(CImage &ImgOut);
	BOOL Rectify(CImage &ImgOut,double dA[2],double dB[2],BYTE byFill=255,CPoint ptOffset=CPoint(0,0),CImage * pImgOrg=NULL);
	BOOL RectifyEx(CImage &ImgOut,int nLR[2],double dA[2],double dB[2],BYTE byFill,CPoint ptOffset,CImage * pImgOrg=NULL);
	BOOL HVEdgeDetect(CImage &ImgH,CImage& ImgV,int nW=1);
	int GetRingNum(CList<int,int> &ListNum,CList<CRect,CRect> &ListRect);

	BOOL GetTextRect(CRect &rcText,BYTE byTextVal=0);
	BOOL DenoiseMax();
	BOOL Denoise(int nPix=8);
	BOOL IsBlackText();
	BOOL CutLeftAndRight(CImage &ImgOut);
	//bVorH=TRUE时表示求竖直最大连续个数
	BOOL Grad1(CImage &ImgOut);
	BOOL GetMaxContinue(int *nMax, CRect rcSelect, BYTE byTextVal=0,BOOL bVorH=TRUE);
	int GetAllTextPointNum(CRect rcNeed,BYTE byVal=0);
	BOOL Filter(CImage &imgOut, int nNeighbor=4,BYTE nTextVal=0, BYTE nBGVal=255);
	BOOL GetTextPointNum(int *nX, int *nY, CRect rcR, BYTE byTextVal);
	BOOL GetTiaoBian(int *nTiaoBianX, int *nTiaoBianY,CRect rcR);
	inline void MaxMin(int *pData,int nNum,int MaxMin[2],int nMaxMinNo[2]);
	inline int Round(double dX);
	void GetOutUpAndDown(int *nTop,int *nBottom,int nNum,int *nTopOut,int *nBottomOut,int nWidth);
	void CutUpAndDown(int &nTop,int &nBottom);
	BOOL GetAvgandS(int &nAvg,int &nS,CRect rcPos);
	void Sort(int * pData,int nNum);
	BOOL SaveBMP(CString strPath);
	BOOL CulcuateInf(double &dH,double &dV,double &dL,double &dR,BYTE *pData,int nW,int nH,BYTE btVal=255);
	//btVal表示有效值
	BOOL EdgeDetect(BYTE btVal=255,int nType=4);
	int GetMedianNum(int *bArray,int iFilterLen);
	BOOL MedianFilter(CImage& ImgOut, int iFilterH, int iFilterW,int iFilterMX, int iFilterMY);
	void ShowImg(HWND hWnd=NULL);
	BOOL GetLineAB(CList<CPoint,CPoint> &ptList,double &dA,double &dB);
	BOOL CalCulate(BYTE pHist[3][256],BYTE pMean[3],double pS[3],CRect * pRect=NULL);
	BOOL GetExactText(CList<CImage,CImage&> &ImgList);
	BOOL CutExact(CImage &ImgOut);
	void CutOffUnUsedArea();
	int GetConnectivity();
	void Inverse();
	int Label();
	void Crop(CRect CropRect);
	void Stretch(CSize Size,int nStretchType=NEAREST);
	BOOL Stretch(BYTE nMax,BYTE nMin);
	BOOL graytoTwo(CImage &ImgOut,CImage &Imgavg,CImage &ImagTh);
	BOOL Grad(CImage &ImgOut);
	BYTE * m_pR;//若是灰度图象则表示灰度
	BYTE * m_pG;
	BYTE * m_pB;
private://识别用
	BOOL CalculateSame(int * nData,int nNum,CList<CPoint,CPoint> &ptList,CPoint &ptMax);
private:
	int GetLevel(double dX,int nType);
	void GetHistogram(int* piHistogram);
	double GetSubPixel(double x, double y, int Method=NEAREST);
	void * m_pShowDlg;
public:
	BOOL Rgb2Yuv(CImage &ImgYuv);
	BOOL CutLRByTiaoBian(int nLR[2],BOOL bBlack,int nH=-1);
	BOOL GetLineAB(CList<CPoint,CPoint> &ptListUp,CList<CPoint,CPoint> &ptListDown,double dAvgH,double dA[],double dB[]);
	BOOL GetABByLianTong(double dA[2], double dB[2]);//输入的二值化图象
	BOOL GetABByTioaBian(double dA[2],double dB[2]); //输入的是灰度图象
	BOOL DanziLeftAndRight(CImage &ImgOut);
	void hanziCutUpAndDown(int &nTop, int &nBottom);
	int GetPixNum(BYTE btVal,CRect rcCal);
	BOOL imLTquzao(CList<CRect,CRect> &ListRect);
	BOOL imGraytoTwo(CImage& ImgOut,BOOL m_bBlack);
	BOOL DayorNight(CImage& ImgOut);
	void imerode(int **se,int s_Height,int s_Width);
	void imdilate(int **se,int s_Height,int s_Width);
//	void imdilate();
	
	int m_nHeight;
	int m_nWidth;
	int m_nPixelNum;
	BOOL m_bRGB;
};
VLPAPI CString  GetAppPath();

class VLPCLASS CRecProcess  
{
public:
	CRecProcess();
	virtual ~CRecProcess();
	BOOL Run(CString strPath,CString &strResult,BOOL bDebug=FALSE);
public:
	BOOL Run(BYTE * pData,int nSize,int nW,int nH,char * cResult);
	CImage GetOrgImg();
	CImage GetVPImg();
	CString GetRecResult();
private:
	void* m_pProcess;
};

#endif // !defined(AFX_IMAGE_H__592ED8F2_7604_4C30_A3AD_E5D235A43EB3__INCLUDED_)





















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -