C++里的一些有关问题
C++里的一些问题~
愚生在写C++代码时遇到一些问题~希望好心人帮忙看看~
1.关于格式转换
这样会报这个错误
错误 28 error C2664: “int CListCtrl::InsertItem(int,LPCTSTR)”: 不能将参数 2 从“void”转换为“LPCTSTR” c:\documents and settings\administrator\桌面\mfcapplication22\mfcapplication1\mfcapplication1dlg.cpp 353
2.关于类和命名空间
这是我的.h文件
然后这是.CPP文件
愚生在写C++代码时遇到一些问题~希望好心人帮忙看看~
1.关于格式转换
CListCtrl m_ListCtrl;
if(CreateProcessA(NULL,"D:\\MyBackup\\我的文档\\Visual Studio 2010\\Projects\\SHOW\\Debug\\SHOW.exe",
NULL,NULL,FALSE,NULL,NULL,NULL,&s_i,&p_i))
{
DWORD pid;
CString PID;
pid=p_i.dwProcessId;
m_ListCtrl.InsertItem(1,PID.Format(_T("%ld",pid)));
//m_ListCtrl.InsertItem(1,pid);
goto CPU;
//写列表
}
这样会报这个错误
错误 28 error C2664: “int CListCtrl::InsertItem(int,LPCTSTR)”: 不能将参数 2 从“void”转换为“LPCTSTR” c:\documents and settings\administrator\桌面\mfcapplication22\mfcapplication1\mfcapplication1dlg.cpp 353
2.关于类和命名空间
这是我的.h文件
#ifndef GAUSSBGMODEL_H
#define GAUSSBGMODEL_H
#include "gaussmodel.h"
using namespace std;
class GaussBGModel
{
public:
GaussBGModel();
~GaussBGModel();
/// 预处理
void prepare(int Rows, int Cols);
/// 检测前景
void detectFG(int FrameNum, const Mat3b &CurrFrame, Mat1b &GrayFGMask);
/// 更新背景模型
void updateBG(int FrameNum, const Mat3b &CurrFrame, float LearningRate = 0.01,
InputArray BlobMask = cv::noArray(), InputArray RectMask = cv::noArray());
/// 返回背景图像(彩色)
void getBGImage(Mat3b &BGImage) const;
public:
int mRows,mCols; ///< 行列数
vector<GaussModel> gmm; ///< 背景模型
};
#endif // GAUSSBGMODEL_H
然后这是.CPP文件
#include "gaussbgmodel.h"
#include "stdafx.h"
GaussBGModel::GaussBGModel()
//{
//}
GaussBGModel::~GaussBGModel()
//{
//
//}
void GaussBGModel::prepare(int Rows, int Cols)
{
mRows = Rows;
mCols = Cols;
// 创建背景模型
gmm.clear();
gmm.resize(mRows * mCols);
}
void GaussBGModel::detectFG(int FrameNum, const Mat3b &CurrFrame, Mat1b &GrayFGMask)
{
// 预处理掩码矩阵
Mat1b currMask = Mat1b(mRows, mCols, BGPixel);
// 遍历当前帧中的像素
for(int row = 0; row < CurrFrame.rows; row++)
{
for(int col = 0; col < CurrFrame.cols; col++)
{
// 确定该像素对应的高斯模型的下标
int index = row * CurrFrame.cols + col;
// 进行前景检测
uchar pixelValue = gmm[index].detect(CurrFrame(row, col));
// 给掩码矩阵赋值
currMask(row, col) = pixelValue;
}
}
currMask.copyTo(GrayFGMask);
}
void GaussBGModel::updateBG(int FrameNum, const Mat3b &CurrFrame, float LearningRate, InputArray BlobMask, InputArray RectMask)
{
// 更新率小于等于0.f,返回
if( LearningRate <= 0.f )
{
return;
}
// 得到前景掩码矩阵
Mat1b blobMask = BlobMask.getMat();
Mat1b rectMask = RectMask.getMat();
// 如为空,则不需要检测前景团块掩码
bool checkBlobMaskFlag = blobMask.empty()? false : true;
// 如果为空,则不需要考虑前景外接矩形掩码
bool checkRectMaskFlag = rectMask.empty()? false : true;
for( int row = 0; row < CurrFrame.rows; row++ )
{
for( int col = 0; col < CurrFrame.cols; col++ )
{
// 确定该像素对应的高斯模型的下标