个人写的图像处理类

源代码链接
// Image.h: interface for the CImage class.
//
//

#if !defined(AFX_IMAGE_H__294B5F7A_8973_4F4D_9AB6_19EB14061FD4__INCLUDED_)
#define AFX_IMAGE_H__294B5F7A_8973_4F4D_9AB6_19EB14061FD4__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <vector>
using namespace std; //使用标准库,必须添加命名空间
struct SLineInfo
{
	int Angle;
	int Dist;
	int Pixels;
	
};

class CImage  
{
public:
	double CalCorrelation(unsigned char*pBase,unsigned char*pSamp,int nBlockLen);
	CString ImageName;
	void InCircle(vector<CPoint>&Polygon,vector<SLineInfo>&Lines,double&R,CPoint¢er);
	double CalRadius(CPoint point,vector<SLineInfo>&LineInfo);
	double Point2Line(CPoint point,SLineInfo Line);
	BOOL HoughLines(vector<SLineInfo> &LineInfo,int nLineRet,unsigned char*img,int nwidth,int nheight);
	CPoint CenterPoint(vector<CPoint>& VectorPoint);
	bool TraceEdge(vector<CPoint>&VectorPoint);
	BOOL TraceEdge(unsigned char*lpSrc,int nwidht,int nheight);
	void MedianFilter();
	int size;
	void toBinary(unsigned char *lpSrc,int nwidth,int nheight,int nthread);
	unsigned char* BinToRgb(unsigned char *lpSrc, int nWidth, int nHeight);
	unsigned char* RgbToBin(unsigned char *lpSrc, int nWidth, int nHeight);
	void SelectArea(CPoint ptStart,CPoint ptEnd);
	void SelectArea(vector<CPoint>Polygon);
	
	BOOL Backup();
	unsigned char* backbuffer;//备份数据
	void GaussianSmooth(double sigma);
	BOOL toBW(int Thread);
	BOOL SaveBMP(LPCTSTR bmpName, unsigned char *imgBuf, int width, int height,int biBitCount, RGBQUAD *pColorTable);
	BOOL SaveBMP(LPCTSTR lpszPathName);
	void DrawHis(CDC*pDC);
	void CalHis(unsigned char*pBits,int nWidth,int nHeight,LONG data[],int nLength);
	LONG Min(LONG data[],int nLength,int &id);
	LONG Max(LONG data[],int nLength,int &id);
	void DrawGraph(CDC *pDC,SIZE sz,LONG data[],int nLength,CString name);
	BOOL Canny(double sigma,double dRatioLow,double dRatioHigh);
	void Template(unsigned char *lpDIBBits, LONG lWidth, LONG lHeight, int iTempH, int iTempW, FLOAT *fpArray, FLOAT fCoef);
	void Canny(LPBYTE pGray, SIZE sz, double sigma, double dRatLow, double dRatHigh, LPBYTE pResult);
	void TraceEdge(int y, int x, int nThrLow, LPBYTE pResult, int *pMag, SIZE sz);
	void Hysteresis(int *pMag, SIZE sz, double dRatLow, double dRatHigh, LPBYTE pResult);
	void EstimateThreshold(int *pMag, SIZE sz, int *pThrHigh, int *pThrLow, LPBYTE pGray,double dRatHigh, double dRatLow);
	void NonmaxSuppress(int *pMag, int *pGradX, int *pGradY, SIZE sz, LPBYTE pNSRst);
	void Grad(SIZE sz, LPBYTE pGray,int *pGradX, int *pGradY, int *pMag);
	void GaussianSmooth(SIZE sz, LPBYTE pGray, LPBYTE pResult, double sigma);
	void CreatGauss(double sigma, double **pdKernel, int *pnWidowSize);
	BOOL ReadBMP(LPCTSTR lpszPathName);
	int openMode;//
	BITMAPFILEHEADER bmpFH;
	int colorBits;// 位数8 24
	int width;
	int height;
	RGBQUAD* palette;//颜色表指针
	unsigned char* imageData;//数据指针
	BITMAPINFOHEADER* bmpIH;
	BITMAPINFO* bmpInfo;
	CImage();

	virtual ~CImage();

protected:
	unsigned int *buffer;
};

#endif // !defined(AFX_IMAGE_H__294B5F7A_8973_4F4D_9AB6_19EB14061FD4__INCLUDED_)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值