当前位置:文档之家› objectARX说明函数

objectARX说明函数

objectARX说明函数
objectARX说明函数

ARX 函数
选择指定图层上的所有实体 Acad::ErrorStatus selectEntityInLayer(const char* nLayerName,AcDbObjectIdArray& nIDs) { Acad::ErrorStatus es = Acad::eOk; ads_name ents; struct resbuf *rb; rb=acutNewRb(AcDb::kDxfLayerName); rb->restype=8; rb->resval.rstring=(char*)nLayerName; rb->rbnext=NULL; acedSSGet("X",NULL,NULL,rb,ents); long entNums=0; acedSSLength(ents,&entNums); if (entNums == 0) es = Acad::eInvalidInput; else { for (long a = 0; a < entNums ; a ++) { AcDbObjectId objId; ads_name ent;
acedSSName(ents,a,ent); acdbGetObjectId(objId, ent); nIDs.append(objId); } } acedSSFree(ents); acutRelRb(rb); return es; } 设置当前层 Acad::ErrorStatus SetCurLayer(const char* lpLayerName, AcDbDatabase* pDb/* = NULL */) {

AcDbDatabase* pCurDb = pDb; if (pCurDb == NULL) pCurDb = acdbHostApplicationServices()->workingDatabase(); AcDbLayerTableRecordPointer spRecord(lpLayerName, pCurDb, AcDb::kForRead); Acad::ErrorStatus es = spRecord.openStatus(); if (es == Acad::eOk) { es = pCurDb->setClayer(spRecord->objectId()); } return es; } 生成新组 //生成新组(sGroupName) //追加数组中所有实体到该组中 //组名字 , Id 数组 int createGroup(CString sGroupName, const AcDbObjectIdArray *idArr) { AcDbGroup *pGroup = new AcDbGroup((LPSTR)(LPCTSTR)sGroupName); AcDbObjectId groupObjectId; AcDbDictionary *pGroupDict = NULL; acdbHostApplicationServices()->workingDatabase() ->getGroupDictionary(pGroupDict, AcDb::kForWrite); pGroupDict->setAt(sGroupName, pGroup, groupObjectId); pGroupDict->close(); pGroup->close(); acdbOpenObject(pGroup, groupObjectId, AcDb::kForWrite); for (int i = 0; i < idArr->length(); i++) { groupObjectId = idArr->at(i); pGroup->append(groupObjectId); } pGroup->close(); return TRUE; } 建立文本格式表函数

AcDbObjectId CreateNewTextStyle() { AcDbTextStyleTable *pTextStyleTable; AcDbTextStyleTableRecord *pTextStyleTableRcd AcDbObjectId textId; acdbHostApplicationServices()->workingDatabase()->getSymbolTable (pTextStyleTable,AcDb::kForWrite); if (!pTextStyleTable->has(StyleName) { AcDbTextStyleTableRecord *pTSTblRcd= new AcDbTextStyleTableRecord; pTSTblRcd->setName(StyleName); pTSTblRcd->setFileName(fontName); pTSTblRcd->setBigFontFileName(bigfontName); pTSTblRcd->setTextSize(textSize); pTSTblRcd->setXScale(xScale); pTSTblRcd->setObliquingAngle(obliqueAngle); pTSTblRcd->setPriorSize(trPercent); pTextStyleTable->add(textId,pTextStyleTableRcd); pTSTblRcd->close(); } pTextStyleTable->close(); return textId; } 区域在区域内 // Function name : RgnInRgn // Descrīption : is Region1 in Region2? // Return type : bool // Argument : const AcDbRegion* pRegion1 // Argument : const AcDbRegion* pRegion2 bool RgnInRgn(const AcDbRegion* pRegion1,const AcDbRegion* pRegion2) { if (pRegion1==NULL||pRegion2==NULL) return false; AcDbObjectPointer< AcDbRegion > spRegion1; AcDbObjectPointer< AcDbRegion > spRegion2; if (spRegion1.create()!=Acad::eOk)

{ acdbFail("\n 内存不足"); return false; } if (spRegion2.create()!=Acad::eOk) { acdbFail("\n 内存不足"); return false; } if ((spRegion1->copyFrom(pRegion1)!= Acad::eOk)|| (spRegion2->copyFrom(pRegion2)!= Acad::eOk)) { acdbFail("\n 无法复制对象"); return false; } bool bResult=false; if(spRegion1->booleanOper(AcDb::kBoolIntersect, spRegion2.object()) == Acad::eOk) { if ((spRegion2->isNull()==Adesk::kTrue)&&(spRegion1->isNull()!=Adesk::kTrue)){ double area1,area0; spRegion1->getArea(area1); pRegion1->getArea(area0); if ((area0 - area1) < AcGeContext::gTol.equalPoint()) bResult=true; } }
return bResult; } 组旋转 void CMyDatabase::rotationGroup(CString strGroupName ,CReiPoint ptRotation,double rotationAngle) { AcGePoint3d pt; AcDbDictionary *pGroupDict;

acdbCurDwg()->getGroupDictionary(pGroupDict,AcDb::kForWrite); AcDbObjectId groupId; AcDbGroup *pGroup; pt.x=ptRotation.x; pt.y=ptRotation.y; pt.z=ptRotation.z; if(pGroupDict->getAt(strGroupName,groupId)==Acad::eOk) acdbOpenObject(pGroup,groupId,AcDb::kForWrite); else { pGroupDict->close(); return; } pGroupDict->close(); AcDbGroupIterator* pIter=pGroup->newIterator(); AcDbEntity* pEnt; AcDbObjectId objId; pIter=pGroup->newIterator(); for(;!pIter->done();pIter->next()) { ōbjId=pIter->objectId(); acdbOpenAcDbEntity(pEnt,objId,AcDb::kForWrite); rotationEntity(pEnt,pt,rotationAngle); pEnt->close(); } delete pIter; pGroup->close(); } 点在区域内
功能:判断点 pt 是否在区域 ptArr 内 实现:根据射线法求交点个数,偶数-区域外,奇数-区域内 变量:pt 指定点 ptArr 判断区域 返回:在区域 TRUE 不在 FALSE
code: BOOL BaseHandle::PointIsInPolygon(AcGePoint3d pt, AcGePoint3dArray ptArr) {

int ptNum,i,interNum; AcGePoint3d ptA,ptB; ads_point pt0,pt1,pt2,ptIns,ptX;
interNum = 0; pt0[X] = 0.0; pt0[Y] = 0.0; pt0[Z] = 0.0; ptX[X] = pt.x; ptX[Y] = pt.y; ptX[Z] = pt.z; ptNum = ptArr.length(); for (i = 0;i < ptNum - 1;i++){ ptA = ptArr.at(i); ptB = ptArr.at(i + 1); pt1[X] = ptA.x; pt1[Y] = ptA.y; pt1[Z] = 0.0; pt2[X] = ptB.x; pt2[Y] = ptB.y; pt2[Z] = 0.0; if (acdbInters(ptX,pt0,pt1,pt2,1,ptIns) == RTNORM){ interNum++; } } if (interNum % 2 == 0){ return false; }else{ return true; }
2008-05-29 13:58
/****************************************************************** 函数名: 功能: 输入参数: setView 设置视图(相当于 Zoom Window 命令) Pt1 -- 视图左上角点
Pt2 -- 视图右下角点

ex_ratio -- 扩展比率,一般为 1.0 输出参数: 返回值: 其它: *****************************************************************/ void setView(AcGePoint2d Pt1, AcGePoint2d Pt2, double ex_ratio) { AcGePoint2d CenterPt; //若 X 坐标或 Y 坐标重合,判为意外,不进行 SetView 操作 if ((fabs(Pt1.x-Pt2.x)<1e-6)||(fabs(Pt1.y-Pt2.y)<1e-6)) return; //确保两个坐标点分别为左上角和右下角 if (Pt1.x>Pt2.x) { double tmp; tmp = Pt1.x; Pt1.x = Pt2.x; Pt2.x = tmp; } if (Pt2.y>Pt1.y) { double tmp; tmp = Pt1.y; Pt1.y = Pt2.y; Pt2.y = tmp; } //获取当前 DwgView 的尺寸 CRect CADrect; acedGetAcadDwgView()->GetClientRect(&CADrect); double width,height,ratio; ratio = (double)(CADrect.right-CADrect.left)/(double)(CADrect.bottom-CADrect.top); if (fabs(ratio)<1e-6) return; if ((Pt2.x-Pt1.x)/(Pt1.y-Pt2.y) > ratio) { width = Pt2.x-Pt1.x; void

height = width/ratio; }else{ height = Pt1.y-Pt2.y; width = height * ratio; } //设置当前视图中心点 CenterPt.x = (Pt1.x+Pt2.x)/2; CenterPt.y = (Pt1.y+Pt2.y)/2; //改变当前视图 AcDbViewTableRecord pVwRec; pVwRec.setCenterPoint(CenterPt); pVwRec.setWidth(width * ex_ratio); pVwRec.setHeight(height * ex_ratio); acedSetCurrentView( &pVwRec, NULL ); } /////////////////////////////////////////////////////////////// // // // // // // // // // 函 数 名 : oxaGetVar 函数功能 : 处理过程 : 备 注 : 作 者 : user 时 间 : 2004 年 6 月 16 日 返 回 值 : int 参数说明 : const CString strSym, AcGePoint3d &vOut
/////////////////////////////////////////////////////////////// int oxaGetVar(const CString strSym, AcGePoint3d &vOut ) { resbuf rbVar ; int iRt=acedGetVar(strSym, &rbVar) ; if (iRt!=RTNORM) { return iRt; } //oxaPrint(&rbVar);

if (rbVar.restype==RTPOINT) { vOut.x=rbVar.resval.rpoint[0]; vOut.y=rbVar.resval.rpoint[1]; } if (rbVar.restype==RT3DPOINT) { vOut.x=rbVar.resval.rpoint[0]; vOut.y=rbVar.resval.rpoint[1]; vOut.z=rbVar.resval.rpoint[2]; } return RTNORM; } ///////////////////////////////////////////////////////////////////////////////// //# DOC.BEGIN //# 函数名称: oxaGetVar //# 函数编号: OXA //# 函数声明: //# 函数参数: const CString strSym, // int &vOut
//# 返回值: int //# 函数分类: //# 函数功能: 获取系统变量, 封装 acedGetVar() //# 注意事项: //# 涉及的全局变量: //# 调用的 OXARX 函数: //# 函数算法: //# ACAD 版本:R14 R15 R16 //# 配合函数: //# 类似函数: //# 替换函数: //# 现存缺陷: //# 示例程序: //# 测试要求: //# 历史记录: 2003 年 11 月 10 日 , zjw ,完成 // //# DOC.END

////////////////////////////////////////////////////////////////////////// int oxaGetVar(const CString strSym, int &vOut ) { resbuf rbVar; int iRt=acedGetVar(strSym, &rbVar) ; if (iRt!=RTNORM) { return iRt; }
if (rbVar.restype==RTLONG) { vOut=rbVar.resval.rlong; } if (rbVar.restype==RTSHORT) { vOut=rbVar.resval.rint; } return RTNORM; } ///////////////////////////////////////////////////////////////////////////////// //# DOC.BEGIN //# 函数名称: oxaGetVar //# 函数编号: OXA //# 函数声明: //# 函数参数: const CString strSym, // double &vOut
//# 返回值: int //# 函数分类: //# 函数功能: 获取系统变量, 封装 acedGetVar() //# 注意事项: //# 涉及的全局变量: //# 调用的 OXARX 函数: //# 函数算法: //# ACAD 版本:R14 R15 R16 //# 配合函数:

//# 类似函数: //# 替换函数: //# 现存缺陷: //# 示例程序: //# 测试要求: //# 历史记录: 2003 年 11 月 24 日 , zjw ,完成 // //# DOC.END int oxaGetVar(const CString strSym, double &vOut ) { resbuf rbVar; int iRt=acedGetVar(strSym, &rbVar) ; if (iRt!=RTNORM) { return iRt; }
if (rbVar.restype==RTREAL) { vOut=rbVar.resval.rreal; } return RTNORM; } ///////////////////////////////////////////////////////////////////////////////// //# DOC.BEGIN //# 函数名称: oxaGetVar //# 函数编号: OXA //# 函数声明: //# 函数参数: const CString strSym, // CString &vOut
//# 返回值: int //# 函数分类: //# 函数功能:获取系统变量, 封装 acedGetVar() //# 注意事项: //# 涉及的全局变量: //# 调用的 OXARX 函数: //# 函数算法:

//# ACAD 版本:R14 R15 R16 //# 配合函数: //# 类似函数: //# 替换函数: //# 现存缺陷: //# 示例程序: //# 测试要求: //# 历史记录: 2003 年 11 月 24 日 , zjw ,完成 // //# DOC.END int oxaGetVar(const CString strSym, CString &vOut ) { resbuf rbVar; int iRt=acedGetVar(strSym, &rbVar) ; if (iRt!=RTNORM) { return iRt; }
if (rbVar.restype==RTSTR) { vOut=rbVar.resval.rstring; } return RTNORM; } // 函数名 : SetCurTextStyle // 描述 // 返回 // 参数 // 参数 : 设置当前 TextStyle : Acad::ErrorStatus : const char* lpStyleName : AcDbDatabase* pDb/* = NULL */
Acad::ErrorStatus SetCurTextStyle(const char* lpStyleName, AcDbDatabase* pDb/* = NULL */) { AcDbDatabase* pCurDb = pDb; if (pCurDb == NULL) pCurDb = acdbHostApplicationServices()->workingDatabase(); AcDbTextStyleTableRecordPointer spRecord(lpStyleName, pCurDb, AcDb::kForRead); Acad::ErrorStatus es = spRecord.openStatus();

if (es == Acad::eOk) { es = pCurDb->setTextstyle(spRecord->objectId()); } return es; } // Function name : SetCurLayer // Descrīption // Return type // Argument // Argument : 设置当前层 : Acad::ErrorStatus : const char* lpLayerName : AcDbDatabase* pDb/* = NULL */
Acad::ErrorStatus SetCurLayer(const char* lpLayerName, AcDbDatabase* pDb/* = NULL */) { AcDbDatabase* pCurDb = pDb; if (pCurDb == NULL) pCurDb = acdbHostApplicationServices()->workingDatabase(); AcDbLayerTableRecordPointer spRecord(lpLayerName, pCurDb, AcDb::kForRead); Acad::ErrorStatus es = spRecord.openStatus(); if (es == Acad::eOk) { es = pCurDb->setClayer(spRecord->objectId()); } return es; } //获取属性块中所有属性的字符串值,并且存于链表中 CODE: void FEGroups::iterateDictionary() { //obtain the GROUP dictionary by looking up "ACAD_GROUP" in the named object dictionary // /* AcDbDictionary *pNamedobj; acdbHostApplicationServices()->workingDatabase() ->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead); // Get a pointer to the ASDK_DICT dictionary. //

AcDbDictionary *pDict; pNamedobj->getAt("ACAD_GROUP", (AcDbObject*&)pDict, AcDb::kForRead); pNamedobj->close(); */ // Get a pointer to the ACAD_GROUP dictionary AcDbDictionary *pDict; acdbHostApplicationServices()->workingDatabase() ->getGroupDictionary(pDict, AcDb::kForRead); // Get an iterator for the ASDK_DICT dictionary. // AcDbDictionaryIterator* pDictIter = pDict->newIterator(); AcDbGroup *pGroup; char* name; for (; !pDictIter->done(); pDictIter->next()) { // Get the current record, open it for read, and // print its name. // pDictIter->getObject((AcDbObject*&)pGroup, AcDb::kForRead); pGroup->getName(name); pGroup->close(); acutPrintf("\nintval is: %s", name); } delete pDictIter; pDict->close(); } //检测 AutoCAD 是否已经运行 CODE: void Autocadtest() { // TODO: Add your control notification handler code here IAcadApplication m_autocad; IAcadDocuments m_acaddocs;

IAcadDocument m_acaddoc; IAcadModelSpace m_acadmodel; LPDISPATCH pDisp; LPUNKNOWN pUnk; CLSID clsid; BeginWaitCursor(); ::CLSIDFromProgID(L"AutoCAD.Application",&clsid); if(::GetActiveObject(clsid,NULL,&pUnk)==S_OK) { VERIFY(pUnk->QueryInterface(IID_IDispatch,(void**) &pDisp)==S_OK); m_autocad.AttachDispatch(pDisp); pUnk->Release(); } else { if(!m_autocad.CreateDispatch("AutoCAD.Application")) { AfxMessageBox("Autocad program not found\n"); exit(1); } } m_autocad.SetVisible(true); m_acaddocs.AttachDispatch(m_autocad.GetDocuments(),true); m_acaddoc.AttachDispatch(m_acaddocs.Add(vtMissing),true); m_acadmodel.AttachDispatch(m_acaddoc.GetModelSpace(),true); m_acadmodel.AddCircle(pVal,100);
m_acadmodel.ReleaseDispatch(); m_acaddoc.ReleaseDispatch(); m_acaddocs.ReleaseDispatch(); m_autocad.ReleaseDispatch(); } //计算多边形的形心坐标 BOOL GetPolyCentroid(AcDbPolyline * pPline, ads_point CenPt) { unsigned int i, iCount = 0; AcDbVoidPtrArray curveSegments, regions;

AcGePoint3d LinePt0, LinePt1; AcGePoint3d origin; AcGeVector3d xAxis, yAxis; double perimeter, area, prodInertia; double momInertia[2], prinMoments[2], radiiGyration[2]; AcGePoint2d centroid; AcGeVector2d prinAxes[2]; AcGePoint2d extentsLow, extentsHigh; if (pPline->isClosed() != Adesk::kTrue) { ads_printf("\n 折线不封闭, 无法形成正确的区域。"); return FALSE; } curveSegments.append((AcDbCurve *) pPline); if (AcDbRegion::createFromCurves(curveSegments, regions) != Acad::eOk){ ads_printf("\n 创建临时区域对象失败!"); //清除 Region, 应第 9 贴的指点,即使 createFromCurves 错误,也应清除之; iCount = regions.length(); for(i = 0; i < iCount; i++) delete (AcDbRegion *)regions.at(i); return FALSE; } AcDbRegion * pRegion; if ((iCount = regions.length()) == 0){ ads_printf("\n 创建临时区域对象为空!"); return FALSE; } if (iCount > 1){ // 多个 AcDbRegion , 无法确定应该返回哪一个,干脆返回 NULL; ads_printf("\n 多个区域实体。"); for(i = 0; i < iCount; i++) delete (AcDbRegion *)regions.at(i); return FALSE; } pRegion = (AcDbRegion *) regions.at(0); origin.set(0,0,0); //设置原点坐标

xAxis.set(1,0,0); //设置 X Y 轴, yAxis.set(0,1,0); if (pRegion->getAreaProp( origin, xAxis, yAxis, perimeter, area, centroid, momInertia, prodInertia, prinMoments, prinAxes, radiiGyration, extentsLow, extentsHigh) != Acad::eOk ){ ads_printf("\n 区域面积: %.3f, 周长:%.3f", area, perimeter); ads_printf("\n 获取区域对象属性失败!"); delete pRegion; return FALSE; } XYZ_POINT(CenPt, centroid.x, centroid.y, 0); //得到形心坐标 ads_printf("\n 区域面积: %.3f, 周长:%.3f", area, perimeter); pRegion->close(); delete pRegion; return TRUE; } AcDbObjectId CreateHatch( AcDbObjectId dbOId, char cLayer[], char cPattern[] = "SOLID", int nColor = 256, double dAngle = 0.0, double dScale = 1.0, AcDbDatabase * pDbDatab = acdbHostApplicationServices()->workingDatabase()) { AcCmColor CmC; AcDbObjectId DbOId; AcDbObjectIdArray DbOIdA(0, 2); AcDbBlockTable * pDbBT; AcDbBlockTableRecord * pDbBTR; AcGeVector3d normal(0.0, 0.0, 1.0);
DbOIdA.append(dbOId);
AcDbHatch* pDbHat = new AcDbHatch();

pDbHat->setDatabaseDefaults();
pDbHat->setAssociative(Adesk::kTrue); // BUG: doesn't do squat! have to set the reactor yourself to get associativity!
pDbHat->appendLoop(AcDbHatch::kExternal, DbOIdA);
pDbHat->setPatternScale(dScale);
pDbHat->setPatternAngle(dAngle);
pDbHat->setPattern(AcDbHatch::kPreDefined, cPattern);
pDbHat->setNormal(normal);
pDbHat->evaluateHatch(); // crucial call or nothing gets displayed!
pDbDatab->getSymbolTable(pDbBT, AcDb::kForRead);
pDbBT->getAt(ACDB_MODEL_SPACE, pDbBTR, AcDb::kForWrite);
pDbBTR->appendAcDbEntity(DbOId, pDbHat);
pDbHat->setLayer(cLayer);
CmC.setColorIndex(nColor);
((AcDbEntity *)pDbHat)->setColor(CmC);
pDbBT->close();
pDbBTR->close();
pDbHat->close();
return DbOId;

} objectARX 常用功能实现集合 一 在 ARX 中禁用 AutoCAD 的某个命令 以 LINE 命令为例,在程序中加入下面的一句即可禁用 LINE 命令: acedCommand(RTSTR, "undefine", RTSTR, "line",RTNONE); 下面的语句则可恢复 LINE 命令的定义: acedCommand(RTSTR, "redefine", RTSTR, "line",RTNONE); 二 在对话框中预览 DWG 文件 使用 acdbDisplayPreviewFromDwg 函数,具体的方法为: char fileName[100]; strcpy(fileName, "C:\\test.dwg"); bool es; HWND pWnd; CFrameWnd *pFrame = (CFrameWnd*)GetDlgItem(IDC_PICTURE); es = acdbDisplayPreviewFromDwg(fileName, pFrame->m_hWnd); 上面的代码将在一个 Picture 控件中显示指定的图形。 另外,需要包含“dbmain.h”头文件。 三 通过 ARX 更改 AutoCAD 窗口的标题名称 CMDIFrameWnd *pp; pp=acedGetAcadFrame(); pp->SetWindowText ("yourName"); pp->UpdateWindow ();
四 获得当前数据库 在 ARX 编程中,经常需要使用当前数据库,例如需要获得当前图形中设置的文字样式、标注样式等。 要获得当前数据库,都可以直接使用下面的方法: AcDbTextStyleTable *pTextStyleTAble; AcDbObjectId textstyleId; textstyleId=acdbHostApplicationServices()->workingDatabase()->textstyle(); 如果用 acadCurDwg 来代替 acdbHostApplicationServices()->workingDatabase(),也能得到同样的结果。 五 将一个图插入另一个图(两种方法)

在实践中常常要将外部的图形文件 source.dwg 中插入到另外一个图形中或者当前图形中.以插入到当前图 形 dest.dwg 为例. 为了将一个 source.dwg 插入 dest.dwg 中,首先要找到 source.dwg 这个文件. 我们可以使用各种基本的技术 和相应的规则从你的机器上或 PDM 数据库中检索到你要插入的 source.dwg, 返回来一个字符窜 sFileName 代表整个文件及其路径. 然后创建一个空的数据库 pNewDb 读入 source.dwg. AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse); //在这里一定要用 Adesk::kFalse acDocManager->lockDocument(acDocManager->curDocument()) ;//如果确定你不需要 LockDocument, 这一行可以不要 es=pNewDb->readDwgFile(sFileName , _SH_DENYNO,false); if (es!=Acad::eOk) { acutPrintf("\nThe file %s cannot be opend",sFileName); return; } 这样,source.dwg 以经用 pNewDb 来表示了. 我们用 pDb 来表示当前数据库 AcDbDatabase *pDb; pDb =acdbHostApplicationServices ()->workingDatabase () ; 现在,我们用 Insert 来插入数据库. Insert 有两种用法,一种是直接 insert, source.dwg 中的图元实体被分散 地插入 pDb 中 pDb->insert( AcGeMatrix3d::kIdentity, pNewDb );//这里假定不对 source.dwg 做比例和转角的变换. 如 果我们在这里结束程序,我们能看到 source.dwg 已经被插入,但不是一个图块. 另外一种插入法是要求插入后 source.dwg 成为一个图块,图块的 attribute 也要从 source.dwg 中得到.这种 方法要做大量的工作.首先运行 insert() CString pBlockName=”TestBlock”; AcDbObjectId blockId; if((es=pDb->insert(blockId, pBlockName,pNewDb, true))==Acad::eOk) { acutPrintf("\ninsert ok\n"); } else { AfxMessageBox("Insert failed");

OpenCV主要函数介绍

4.1 OpenCV主要函数介绍 1) cvLoadImage 从文件中读取图像 IplImage* cvLoadImage(const char* filename,int flags=CV_LOAD_IMAGE_COLOR ); 函数cvLoadImage从指定文件读入图像,返回读入图像的指针。其中filename是要被读入的文件的文件名;flags指定读入图像的颜色和深度。 2)cvSaveImage 保存图像到文件 int cvSaveImage( const char* filename, const CvArr* image ); 函数cvSaveImage保存图像到指定文件。其中filename保存文件名。image 要保存的图像。图像格式的的选择依赖于filename的扩展名,只有8位单通道或者3通道(通道顺序为'BGR' )可以使用这个函数保存。 3)cvQueryFrame从摄像头或者文件中抓取并返回一帧 IplImage* cvQueryFrame( CvCapture* capture ); 函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。返回的图像不可以被用户释放或者修改。其中capture视频获取结构。。 4)cvCaptureFromCAM 初始化摄像头 CvCapture* cvCaptureFromCAM( int index ); 函数cvCaptureFromCAM给从摄像头的视频流分配和初始化CvCapture结构。 其中index要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。 5)cvHaarDetectObjects 用来检测图像中的人脸区域 CV API(CvSeq*) cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade, CvMemStorage* storage, double scale_factor CV_DEFAULT(1.1), int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0), CvSize min_size CV_DEFAULT(cvSize(0,0)), CvSize max_size CV_DEFAULT(cvSize(0,0))); 用于快速检测人脸区域,便于提取得到人脸数据。其中image 为被检图像,cascade为 haar分类器级联的内部标识形式,storage 为用来存储检测到的一

opencv函数目录-Cv图像处理

目录 1 梯度、边缘和角点 1.1 Sobel 1.2 Laplace 1.3 Canny 1.4 PreCornerDetect 1.5 CornerEigenValsAndVecs 1.6 CornerMinEigenVal 1.7 CornerHarris 1.8 FindCornerSubPix 1.9 GoodFeaturesToTrack 2 采样、插值和几何变换 2.1 InitLineIterator 2.2 SampleLine 2.3 GetRectSubPix 2.4 GetQuadrangleSubPix 2.5 Resize 2.6 WarpAffine 2.7 GetAffineTransform 2.8 2DRotationMatrix 2.9 WarpPerspective 2.10 WarpPerspectiveQMatrix 2.11 GetPerspectiveTransform 2.12 Remap 2.13 LogPolar 3 形态学操作 3.1 CreateStructuringElementEx 3.2 ReleaseStructuringElement 3.3 Erode 3.4 Dilate 3.5 MorphologyEx 4 滤波器与色彩空间变换 4.1 Smooth 4.2 Filter2D 4.3 CopyMakeBorder 4.4 Integral 4.5 CvtColor 4.6 Threshold 4.7 AdaptiveThreshold 5 金字塔及其应用 5.1 PyrDown 5.2 PyrUp 6 连接部件 6.1 CvConnectedComp

通达信函数大全使用说明

软件简介: 通达信全部函数及其用法(2011年最新版) (一)行情函数 1)HIGH(H)最高价返回该周期最高价.2)LOW(L)最低价返回该周期最低价.3)CLOSE(C)收盘价返回该周期收盘价.4)VOL(V)成交量(手)返回该周期成交量.5)OPEN (O)开盘价返回该周期开盘价.6)ADVANCE 上涨家数返回该周期上涨家数. (本函数仅对大盘有效)7)DECLINE 下跌家数返回该周期下跌家数. (本函数仅对大盘有效)8)AMOUNT 成交额(元)返回该周期成交额.9)VOLINSTK 持仓量返回期货该周期持仓量.10)QHJSJ 期货结算价返回期货该周期结算价. 11)BUYVOL 外盘(手)返回外盘,即时行情数据 12)SELVOL 外盘(手)返回外盘 13)ISBUYORDER 主动性买单返回当前成交是否为主动性买单.用法: ISBUYORDER,当本笔成交为主动性买盘时,返回1,否则为0 14)DHIGH 不定周期最高价返回该不定周期最高价.15)DOPEN 不定周期开盘价返回该不定周期开盘价.16) DLOW 不定周期最低价返回该不定周期最低价.17)DCLOSE 不定周期收盘价返回该不定周期收盘价.18) DVOL 不定周期成交量价返回该不定周期成交量价.19)NAMELIKE 模糊股票名称返回股票名称是否以参数开头.

用法: if(NAMELIKE('ST'),x,y); 20)CODELIKE 模糊股票代码返回股票代码是否以参数开头. 用法: if(CODELIKE('600'),x,y); 21)INBLOCK 属于某板块返回股票是否属于某板块. 用法: if(INBLOCK('沪深300'),x,y); (二)时间函数 1)PERIOD 周期取得周期类型. 结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年. 2)DATE 日期取得该周期从1900以来的的年月日. 用法: DATE 例如函数返回1000101,表示2000年1月1 日,DATE+19000000后才是真正的日期值 3)TIME 时间取得该周期的时分秒.用法: TIME 函数返回有效值范围为(000000-235959) 4)YEAR 年份取得该周期的年份.5)MONTH 月份取得该周期的月份.用法: 函数返回有效值范围为(1-12) 6)WEEKDAY 星期取得该周期的星期数.用法: WEEKDAY 函数返回有效值范围为(1-7) 7)DAY 日取得该周期的日期.用法: DAY 函数返回有效值范围为(1-31) 8)HOUR 小时取得该周期的小时数.用法: HOUR 函数返回有效值范围为(0-23),对于日线及更长的分析周期值为0

OPENCV库函数使用说明

OPENCV(Intel Open Source Computer Vision Library)是一种数字图像处理和计算机视觉的函数库,由Intel公司微处理器实验室(Intel’s Microprocessor Research Lab)的视觉交互组(The Visual Interactivity Group)开发。它可以在Windows系统、Linux系统、MacOSx系统等操作平台上使用,也可以和其他编程工具结合,以满足不同的使用要求。使用OPENCV使用C/C++编写,包含300多个图像处理函数,有以下几个对立的子库组成: 1.CXCORE:一些基本函数(各种数据类型的基本运算等) 2.CV:图像处理和计算机视觉算法(图像处理、结构分析、运动分析、物体跟 踪和模式识别等) 3.HIGHGUI:用户交互部分(图形界面,图像视频输入输出,系统调用函数) 4.CVAUX:一些实验性的函数(三维跟踪等) 在这些库函数的支持下,用户可以直接调用滤波函数,形态学处理,图像特征提取,轮廓提取算法和跟踪算法,也可以添加自己编写的子函数,不但能完成复杂的开发任务,还可以提高效率,达到事半功倍的效果。 OPENCV的重要特性: 1.拥有包括300多个C函数的跨平台的中、高层API。它不依赖于其他的外部库——尽管也可以使用某些外部库。 2.对非商业应用和商业应用都是免费(FREE)的。 3.为Integrated Performance Primitives(IPP)提供了透明的接口。这意味着如果有为特定处理器优化的IPP库,OPENCV将在运行时自动加载这些库。 在VC++环境中OPENCV的使用设置: Microsoft公司开发的Visual C++是一种具有高度综合性能的软件开发工具。用它开发出的程序具有运行速度快,可移植能力强等优点,在对数字图像处理进行处理时经常采用Visual C++进行编程,通过对VC进行配置,就可以在编程过程中直接使用OPENCV的函数编写代码,减少了工作量,提高了运行效率。 在OPENCV安装完成后,首先需要把它的路径加入到系统环境变量中,然后再VC菜单Tools→Options→Directories下设置Library files路径,再选择Source files,最后选择Include files,就可以加入路径,如错误!未找到引用源。所示。设置完成后,就可以新建或打开一个使用OPENCV的工程。 打开工程后,选择菜单Project→Settings,然后将Setting for选为All Configurations,再选择右边的link标签,在Object/library modules加上工程属性中使用的库,这样就可以顺利编程。

C++中所有函数的使用说明

C++函数大全 2010-04-10 10:11 数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中 double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度 double atan(double x) 返回x的反正切tan-1(x)值,x为弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度 double cos(double x) 返回x的余弦cos(x)值,x为弧度 double sin(double x) 返回x的正弦sin(x)值,x为弧度 double tan(double x) 返回x的正切tan(x)值,x为弧度 double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度 double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度 double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度 double hypot(double x,double y) 返回直角三角形斜边的长度(z), x和y为直角边的长度,z2=x2+y2 double ceil(double x) 返回不小于x的最小整数 double floor(double x) 返回不大于x的最大整数 void srand(unsigned seed) 初始化随机数发生器 int rand() 产生一个随机数并返回这个数 double poly(double x,int n,double c[])从参数产生一个多项式 double modf(double value,double *iptr)将双精度数value分解成尾数和阶double fmod(double x,double y) 返回x/y的余数 double frexp(double value,int *eptr) 将双精度数value分成尾数和阶double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数 double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数 char *ecvt(double value,int ndigit,int *decpt,int *sign) 将浮点数value转换成字符串并返回该字符串 char *fcvt(double value,int ndigit,int *decpt,int *sign) 将浮点数value转换成字符串并返回该字符串

OPENCV函数

Opencv函数 分配图像空间: IplImage*cvCreateImage(CvSize size,int depth,int channels); size:cvSize(width,height); depth:IPL_DEPTH_8U,IPL_DEPTH_8S,IPL_DEPTH_16U, IPL_DEPTH_16S,IPL_DEPTH_32S,IPL_DEPTH_32F, IPL_DEPTH_64F channels:1,2,3or4. 注意数据为交叉存取.彩色图像的数据编排为b0g0r0b1g1 r1... 举例: //分配一个单通道字节图像 IplImage*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); //分配一个三通道浮点图像 IplImage*img2=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3); 释放图像空间: IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); cvReleaseImage(&img); 复制图像: IplImage*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); IplImage*img2; img2=cvCloneImage(img1); 设定/获取兴趣区域: void cvSetImageROI(IplImage*image,CvRect rect); void cvResetImageROI(IplImage*image); vRect cvGetImageROI(const IplImage*image); 大部分OpenCV函数都支持ROI. 设定/获取兴趣通道: void cvSetImageCOI(IplImage*image,int coi);//0=all int cvGetImageCOI(const IplImage*image); 大部分OpenCV函数暂不支持COI.

常用C语言图形函数使用说明

常用C语言图形函数使用说明 (以下函数均应在图形方式初始之后使用,在win-tc中使用BGI图形程序模板时,其中已经定义有一个initgr函数,在main函数中应在执行initgr函数之后再使用这些函数。使用这些函数时,均应在程序中包含头文件graphics.h,即程序开始时应有#include "graphics.h") 1、setcolor(色彩值):设置绘图色彩,使用该函数后,图形函数所绘制的直线或曲线为该函数中指定的色彩。例如: setcolor(YELLOW); circle(320,240,100); 在屏幕中央以黄色绘制半径为100的圆。(关于画图色彩使用的说明) 2、setbkcolor(色彩值):设置图形屏幕的背景色彩,使用该函数后图形屏幕清屏,背景色彩为该函数中所指定的色彩。如果没有使用该函数设置背景色,则图形屏幕的背景色彩为黑色。 3、cleardevice():清除图形屏幕上已经绘制的内容,该函数没有参数。 4、line(x1,y1,x2,y2): 绘制直线段,其中(x1,y1)为一个端点的坐标,(x2,y2)为另一个端点的坐标。直线的色彩为在使用该函数之前通过setcolor函数所设置的色彩。例如: setcolor(WHITE); line(0,240,639,240);绘制一条横贯屏幕中间的白色水平直线。 5、circle(x,y,r):绘制一个以(x,y)为圆心坐标,半径为r的圆。例如: setcolor(WHITE); circle(320,240,100);绘制一个以(320,240)为圆心位置,半径为100 的圆。 6、rectangle(x1,y1,x2,y2):绘制一个以(x1,y1)和(x2,y2)为对角端点坐标的矩形 7、putpixel(x,y,color):在(x,y)坐标位置处绘制一个点,点的色彩由color 指定。例如: putpixel(320,240,RED);在屏幕中央绘制一个红色的点。

OPenCV3.2中Mat对象常用函数属性总结

OPenCV3.2中Mat对象常用函数属性总结Mat对象是OpenCV2.0之后引进的图像数据结构,它能自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分。 在使用Mat对象时,有以下四个要点需要注意: 1、输出图像的内存是自动分配的 2、使用OpenCV的C++接口,不需要考虑内存分配问题 3、赋值操作和拷贝构造函数只会复制头部分 4、使用clone与copyTo两个函数实现数据完全复制 下面我们就具体介绍一下公共成员函数和公共属性。 公共成员函数: 1、cv::Mat::Mat ( int rows, int cols, int type ) 参数: rows2D数组中的行数 cols2D数组中的列数。 type数组类型。使用CV_8UC1,…,CV_64FC4创建1 - 4通道矩阵,或CV_8UC(n),…,CV_64FC(n)创建多通道(向上到CV_CN_MAX通道)矩阵。

2、cv::Mat::Mat ( Size size, int type ) 参数: size 2D数组大小:Size(cols, rows)。在Size()构造函数中,行数和列数以相反的顺序排列。 type 数组类型。使用CV_8UC1,…,CV_64FC4创建1 - 4通道矩阵,或CV_8UC(n),…,CV_64FC(n)创建多通道(向上到CV_CN_MAX通道)矩阵。 3、cv::Mat::Mat ( int rows, int cols, int type, const Scalar & s ) 参数: rows2D数组中的行数。 cols 2D数组中的列数。 type数组类型。使用CV_8UC1,…,CV_64FC4创建1 - 4通道矩阵,或CV_8UC(n),…,CV_64FC(n)创建多通道(向上到CV_CN_MAX通道)矩阵。s 初始化每个矩阵元素的可选值。在构建后将所有矩阵元素设置为特定值, 使用赋值运算符Mat::operator=(const Scalar& value) 。 4、cv::Mat::Mat ( Size size, int type,

快速学习OPENCV常用函数

访问图像元素如下: 1、针对各种图像(包括4-通道)和矩阵的函数(cvGet2D,cvSet2D),但是它们都很慢. (img->origin=IPL_ORIGIN_TL)或者是左下角(img->origin=IPL_ORIGIN_BL) 假设有8-bit1-通道的图像I(IplImage*img): I(x,y)~((uchar*)(img->imageData+img->widthStep*y))[x] 假设有8-bit3-通道的图像I(IplImage*img): I(x,y)blue~((uchar*)(img->imageData+img->widthStep*y))[x*3] I(x,y)green~((uchar*)(img->imageData+img->widthStep*y))[x*3+1] I(x,y)red~((uchar*)(img->imageData+img->widthStep*y))[x*3+2] 如果增加点(100,100)的亮度30,那么可以: CvPoint pt={100,100}; ((uchar*)(img->imageData+img->widthStep*pt.y))[pt.x*3]+=30; ((uchar*)(img->imageData+img->widthStep*pt.y))[pt.x*3+1]+=30; ((uchar*)(img->imageData+img->widthStep*pt.y))[pt.x*3+2]+=30; CvPoint pt={100,100}; uchar*temp_ptr=&((uchar*)(img->imageData+ img->widthStep*pt.y))[x*3]; temp_ptr[0]+=30; temp_ptr[1]+=30; temp_ptr[2]+=30; 假设有32-bit浮点数,1-通道图像I(IplImage*img): I(x,y)~((float*)(img->imageData+img->widthStep*y))[x] 现在,通用方法:假设有N-通道,类型为T的图像: I(x,y)c~((T*)(img->imageData+img->widthStep*y))[x*N+c] 或者你可使用宏CV_IMAGE_ELEM(image_header,elemtype,y,x_Nc) I(x,y)c~CV_IMAGE_ELEM(img,T,y,x*N+c) 2、访问矩阵元素 设有32-bit浮点数的实数矩阵M(CvMat*mat): M(i,j)~((float*)(mat->data.ptr+mat->step*i))[j] 设有64-bit浮点数的复数矩阵M(CvMat*mat): Re M(i,j)~((double*)(mat->data.ptr+mat->step*i))[j*2] Im M(i,j)~((double*)(mat->data.ptr+mat->step*i))[j*2+1]

excel函数代码

excel公式应用大全 1、ABS函数函数名称:ABS 主要功能:求出相应数字的绝对值。使用格式:ABS(number) 参数说明:number代表需要求绝对值的数值或引用的单元格。 应用举例:如果在B2单元格中输入公式:=ABS(A2),则在A2单元格中无论输入正数(如100)还是负数(如-100),B2中均显示出正数(如100)。 特别提醒:如果number参数不是数值,而是一些字符(如A等),则B2中返回错误值“#VALUE!”。 2、AND函数函数名称:AND 主要功能:返回逻辑值:如果所有参数值均为逻辑“真(TRUE)”,则返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。 使用格式:AND(logical1,logical2, ...) 参数说明:Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。 应用举例:在C5单元格输入公式:=AND(A5>=60,B5>=60),确认。如果C5中返回TRUE,说明A5和B5中的数值笥诘扔?0,如果返回FALSE,说明A5和B5中的数值至少有一个小于60。 特别提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。 3、AVERAGE函数函数名称:AVERAGE 主要功能:求出所有参数的算术平均值。 使用格式:AVERAGE(number1,number2,……) 参数说明:number1,number2,……:需要求平均值的数值或引用单元格(区域),参数不超过30个。 应用举例:在B8单元格中输入公式:=AVERAGE(B7:D7,F7:H7,7,8),确认后,即可求出B7至D7区域、F7至H7区域中的数值和7、8的平均值。 特别提醒:如果引用区域中包含“0”值单元格,则计算在内;如果引用区域中包含空白或字符单元格,则不计算在内。 4、COLUMN 函数 函数名称:COLUMN 主要功能:显示所引用单元格的列标号值。 使用格式:COLUMN(reference) 参数说明:reference为引用的单元格。 应用举例:在C11单元格中输入公式:=COLUMN(B11),确认后显示为2(即B列)。 特别提醒:如果在B11单元格中输入公式:=COLUMN(),也显示出2;与之相对应的还有一个返回行标号值的函数——ROW(reference)。 5、CONCATENATE函数 函数名称:CONCATENATE 主要功能:将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中。 使用格式:CONCATENATE(Text1,Text……) 参数说明:Text1、Text2……为需要连接的字符文本或引用的单元格。 应用举例:在C14单元格中输入公式:=CONCATENATE(A14,"@",B14,".com"),确认后,即可将A14单元格中字符、@、B14单元格中的字符和.com连接成一个整体,显示在C14单元格中。 特别提醒:如果参数不是引用的单元格,且为文本格式的,请给参数加上英文状态下的双引号,如果将上述公式改为: =A14&"@"&B14&".com",也能达到相同的目的。 6、COUNTIF函数 函数名称:COUNTIF 主要功能:统计某个单元格区域中符合指定条件的单元格数目。 使用格式:COUNTIF(Range,Criteria) 参数说明:Range代表要统计的单元格区域;Criteria表示指定的条件表达式。 应用举例:在C17单元格中输入公式:=COUNTIF(B1:B13,">=80"),确认后,即可统计出B1至B13单元格区域中,数值大于等于80的单元格数目。 特别提醒:允许引用的单元格区域中有空白单元格出现 7、DATE函数 函数名称:DATE 主要功能:给出指定数值的日期。 使用格式:DATE(year,month,day) 参数说明:year为指定的年份数值(小于9999);month为指定的月份数值(可以大于12);day为指定的天数。 应用举例:在C20单元格中输入公式:=DATE(2003,13,35),确认后,显示出2004-2-4。 特别提醒:由于上述公式中,月份为13,多了一个月,顺延至2004年1月;天数为35,比2004年1月的实际天数又多了4天,故又顺延至2004年2月4日。 上页我们介绍了ABS、AND、AVERAGE、COLUMN 、CONCATENATE、COUNTIF 、DATE 这七个常用函数,今天我们继续介绍下面的七个常用函数: DATEDIF函数:计算返回两个日期参数的差值。 DAY函数:计算参数中指定日期或引用单元格中的日期天数。 DCOUNT函数:返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。 FREQUENCY函数:以一列垂直数组返回某个区域中数据的频率分布。 IF函数:根据对指定条件的逻辑判断的真假结果,返回相对应条件触发的计算结果。 INDEX函数:返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。 INT函数:将数值向下取整为最接近的整数。 8、DATEDIF函数 函数名称:DATEDIF 主要功能:计算返回两个日期参数的差值。

OpenCV最基础的图像处理的例子

?什么是OpenCV ?开源C/C++计算机视觉库. ?面向实时应用进行优化. ?跨操作系统/硬件/窗口管理器. ?通用图像/视频载入、存储和获取. ?由中、高层API构成. ?为Intel?公司的Integrated Performance Primitives (IPP) 提供了透明接口. ?特性: ?图像数据操作(分配,释放, 复制, 设定, 转换). ?图像与视频I/O (基于文件/摄像头输入, 图像/视频文件输出). ?矩阵与向量操作与线性代数计算(相乘, 求解, 特征值, 奇异值分解SVD). ?各种动态数据结构(列表, 队列, 集, 树, 图). ?基本图像处理(滤波, 边缘检测, 角点检测, 采样与插值, 色彩转换, 形态操作, 直方图, 图像金字塔). ?结构分析(连接成分, 轮廓处理, 距离转换, 模板匹配, Hough转换, 多边形近似, 线性拟合, 椭圆拟合, Delaunay三角化). ?摄像头标定 (寻找并跟踪标定模板, 标定, 基础矩阵估计, homography估计, 立体匹配). ?动作分析(光流, 动作分割, 跟踪). ?对象辨识 (特征方法, 隐马可夫链模型HMM). ?基本GUI(显示图像/视频, 键盘鼠标操作, 滚动条). ?图像标识 (直线, 圆锥, 多边形, 文本绘图) ?OpenCV 模块: ?cv - OpenCV 主要函数. ?cvaux - 辅助(实验性) OpenCV 函数. ?cxcore - 数据结构与线性代数算法. ?highgui - GUI函数. 资料链接 ?参考手册: ?/docs/index.htm ?网络资源: ?官方网页: https://www.doczj.com/doc/a72733974.html,/technology/computing/opencv/?软件下载: https://www.doczj.com/doc/a72733974.html,/projects/opencvlibrary/ ?书籍: ?Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006). ?视频处理例程(位于/samples/c/目录中): ?色彩跟踪: camshiftdemo ?点跟踪: lkdemo

代码编写规范说明书

代码编写规范说明书(c#.net与https://www.doczj.com/doc/a72733974.html,)目录 1 目的 2 范围 3 注释规范 3.1 概述 3.2 自建代码文件注释 3.3 模块(类)注释 3.4 类属性注释 3.5 方法注释 3.6 代码间注释 4 命名总体规则 5 命名规范 5.1 变量(Variable)命名 5.2 常量命名 5.3 类(Class)命名 5.4 接口(Interface)命名 5.5 方法(Method)命名 5.6 名称空间Namespace)命名 6 编码规则 6.1 错误检查规则 6.2 大括号规则 6.3 缩进规则 6.4 小括号规则 6.5 If Then Else规则 6.6 比较规则 6.7 Case规则 6.8 对齐规则 6.9 单语句规则 6.10 单一功能规则 6.11 简单功能规则 6.12 明确条件规则 6.13 选用FALSE规则 6.14 独立赋值规则 6.15 定义常量规则 6.16 模块化规则 6.17 交流规则 7 编程准则 7.1 变量使用 7.2 数据库操作 7.3 对象使用 7.4 模块设计原则 7.5 结构化要求 7.6 函数返回值原则 8 代码包规范 8.1 代码包的版本号

8.2 代码包的标识 9 代码的控制 9.1 代码库/目录的建立 9.2 代码归档 10 输入控制校验规则 10.1 登陆控制 10.2 数据录入控制 附件1:数据类型缩写表 附件2:服务器控件名缩写表 1 目的 一.为了统一公司软件开发设计过程的编程规范 二.使网站开发人员能很方便的理解每个目录,变量,控件,类,方法的意义 三.为了保证编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。 四.编码规范和约定必须能明显改善代码可读性,并有助于代码管理、分类范围适用于企业所有基于.NET平台的软件开发工作 2 范围 本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。 3 注释规范 3.1 概述 a) 注释要求英文及英文的标点符号。 b) 注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。 c) 每行注释的最大长度为100个字符。 d) 将注释与注释分隔符用一个空格分开。 e) 不允许给注释加外框。 f) 编码的同时书写注释。 g) 重要变量必须有注释。 h) 变量注释和变量在同一行,所有注释必须对齐,与变量分开至少四个“空格”键。 如:int m_iLevel,m_iCount; // m_iLevel ....tree level // m_iCount ....count of tree items string m_strSql; //SQL i) 典型算法必须有注释。 j) 在循环和逻辑分支地方的上行必须就近书写注释。 k) 程序段或语句的注释在程序段或语句的上一行 l) 在代码交付之前,必须删掉临时的或无关的注释。 m) 为便于阅读代码,每行代码的长度应少于100个字符。 3.2 自建代码文件注释 对于自己创建的代码文件(如函数、脚本),在文件开头,一般编写如下注释: /****************************************************** FileName: Copyright (c) 2004-xxxx *********公司技术开发部 Writer: create Date: Rewriter:

opencv最基础的图像处理

openCV——几个实用函数 2010年12月20日星期一 09:18 1. cvSmooth:各种方法的图像平滑 void cvSmooth( const CvArr* src, CvArr* dst, int smoothtype=CV_GAUSSIAN, int param1=3, int param2=0, double param3=0 ); src 输入图像. dst 输出图像. smoothtype 平滑方法: . CV_BLUR_NO_SCALE (简单不带尺度变换的模糊) - 对每个象素的param1×param2 领域求和。如果邻域大小是变化的,可以事先利用函数cvIntegral 计算积分图像。 . CV_BLUR (simple blur) - 对每个象素param1×param2邻域求和并做尺度变换 1/(param1.param2). . CV_GAUSSIAN (gaussian blur) - 对图像进行核大小为 param1×param2 的高斯卷积 . CV_MEDIAN (median blur) - 对图像进行核大小为 param1×param1 的中值滤波 (i.e. 邻域是方的). . CV_BILATERAL (双向滤波) - 应用双向 3x3 滤波,彩色 sigma=param1,空间 sigma=param2. 平滑操作的第一个参数. param2 平滑操作的第二个参数. 对于简单/非尺度变换的高斯模糊的情况,如果 param2的值为零,则表示其被设定为param1。 param3

对应高斯参数的 Gaussian sigma (标准差). 如果为零,则标准差由下面的核尺寸计算: sigma = (n/2 - 1)*0.3 + 0.8, 其中 n=param1 对应水平核, n=param2 对应垂直核. 对小的卷积核 (3×3 to 7×7) 使用如上公式所示的标准 sigma 速度会快。如果 param3 不为零,而 param1 和 param2 为零,则核大小有sigma 计算 (以保证足够精确的操作). 函数 cvSmooth 可使用上面任何一种方法平滑图像。每一种方法都有自己的特点以及局限。 没有缩放的图像平滑仅支持单通道图像,并且支持8位到16位的转换(与cvSobel和cvaplace相似)和32位浮点数到32位浮点数的变换格式。 简单模糊和高斯模糊支持 1- 或 3-通道, 8-比特和 32-比特浮点图像。这两种方法可以(in-place)方式处理图像。 中值和双向滤波工作于 1- 或 3-通道, 8-位图像,但是不能以 in-place 方式处理图像. 2.IplImage结构 由于OpenCV主要针对的是计算机视觉方面的处理,因此在函数库中,最重要的结构体是IplImage结构。IplImage结构来源于Intel的另外一个函数库Intel Image Processing Library (IPL),该函数库主要是针对图像处理。IplImage结构具体定义如下: typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/

Opencv中函数的用法

1、cvLoadImage:将图像文件加载至内存; 2、cvNamedWindow:在屏幕上创建一个窗口; 3、cvShowImage:在一个已创建好的窗口中显示图像; 4、cvWaitKey:使程序暂停,等待用户触发一个按键操作; 5、cvReleaseImage:释放图像文件所分配的内存; 6、cvDestroyWindow:销毁显示图像文件的窗口; 7、cvCreateFileCapture:通过参数设置确定要读入的AVI文件; 8、cvQueryFrame:用来将下一帧视频文件载入内存; 9、cvReleaseCapture:释放CvCapture结构开辟的内存空间; 10、cvCreateTrackbar:创建一个滚动条; 11、cvSetCaptureProperty:设置CvCapture对象的各种属性; 12、cvGetCaptureProperty:查询CvCapture对象的各种属性; 13、cvGetSize:当前图像结构的大小; 14、cvSmooth:对图像进行平滑处理; 15、cvPyrDown:图像金字塔,降采样,图像缩小为原来四分之一; 16、cvCanny:Canny边缘检测; 17、cvCreateCameraCapture:从摄像设备中读入数据; 18、cvCreateVideoWriter:创建一个写入设备以便逐帧将视频流写入视频文件;搜索 19、cvWriteFrame:逐帧将视频流写入文件; 20、cvReleaseVideoWriter:释放CvVideoWriter结构开辟的内存空间; 21、CV_MAT_ELEM:从矩阵中得到一个元素; 22、cvAbs:计算数组中所有元素的绝对值;

炒股函数公式的写法函数公式汇总与代码的使用方法

炒股函数公式的写法函数公式汇总与代码的使用方法 怎样写函数炒股公式 函数代码的使用说明(凡绿色字体,你都可以用鼠标左键点击进入!)和自己写 T+0 公式之后,有网友说:分析家数据找不到,中国股票软件公式网给的公式不会用。分析家数据给的公式是要导入的。中国股票软件公式网给的公式其实也很简单,只要把其中的一个复制下来,粘贴到行情软件的“指标公式编辑器”里就行了。 “指标公式编辑器”,除了像“决策天机”之类的个别软件,其它通常行情软件都提供了。我们只要在菜单中找到它,就可以自己写公式了。但它们在菜单栏中的位置不同,需要我们一个个菜单栏去找。比如: 通信达的“指标公式编辑器”在菜单的“特色/专家系统/公式管理器”项内 同花顺的“指标公式编辑器”在菜单的“工具”项内

操盘手的“指标公式编辑器”在菜单的“系统功能”项内 分析家的“指标公式编辑器”在菜单的“公式”项内

大智慧的“指标公式编辑器”在菜单的“功能”项内 进入行情软件的“自编公式”项或“公式管理”项后,我们就能看到“指标公式编辑器”了。在“指标公式编辑器”上,我们先要把自己的公式,排在“用户”组中。 右栏有“导入公式”(有的叫“导入”)。导入的就是分析家数据上

的公式。因为各行情软件要求的扩展名文件不同,所以通常“导入公式”、“导出公式”的公式,只能在相应的行情软件上用,不是所有软件都通用的。 而右栏的“新建”项,则可以直接粘贴、修改、编写从公式网下载的公式函数。 下面是通信达软件的“公式管理器”。 操盘手的“公式编辑”和通信达软件的“公式管理器”大同小异

我们只要把下载下来的公式函数,复制、粘贴到“指标公式编辑器”上的最大的那个编辑窗口里后,点击确定就行了。 通信达在编辑窗口下,还有一个动态翻译窗口,公式每一行的内涵,它都能翻译出来。这是我们学习公式函数的利器。

函数代码的使用说明

函数代码的使用说明 ABS 绝对值 BACKSET 回头设置 BARSCOUNT(CLOSE) 若收盘价则将最近?周期置为1 CAPITAL 当前流通股本(手) CIRCLEDOT 圈点显示 CLOSE 收盘价 DRAWICON 画图标 DRAWTEXT 书写文字 EMA 指数移动平均 FILLRGN 根据条件填充区域 FILTER 过滤(不考虑、忽略) HHV(HIGH,75) 75日内最高价的最高值 IF 如果 IF(X,A,B)若X不为0则返回A,否则返回B INDEXC 收盘价 LLV(LOW,75) 75日内最低价的最低值 MA 简单移动平均 MAX 最[较]大值 PEAKBARS 波峰位置 POINTDOT 小点显示

POLYILINE 画折线 SMA 移动平均 STICKLINE 画柱状线 TROUGHBARS 波谷位置 VOL 成交量(手) WINNER 获利盘 ZIG(1,13) 最高价13%的之字转向 ZIG(2,13) 开盘价13%的之字转向 ZIG(3,13) 收盘价13%的之字转向 VAR7B:=IF(TROUGHBARS(3,16,1)=0 AND HIGH>LOW+0.04,4,0); VAR7B赋值(不显示):如果收盘价16%之字转向的前1个波谷位置=0 AND HIGH>最低价+0.04,返回4,否则返回0 V10:=PEAKBARS(3,15,1)<10; V10赋值:收盘价15%之字转向的前1个波峰位置<10 V7:=BACKSET(V6,3); V7赋值:若V6则将最近3周期置为1

DRAWICON(FILTER((D1 OR D2 OR D3) AND DD<15 AND C>REF(C,1),5),5,1); 当满足条件(D1ORD2ORD3)ANDDD<15ANDC>昨收的5日过滤时,在5位置画1号图标 {显示式":",不显示式":="} 例如: ma1:ma(c,5),colorred; ma2:ma(c,10),colorgreen,POINTDOT; ..... ma1:=ma(c,5); ma2:=ma(c,10); ..... {用'字'显示} 该式开头会以DRAW..TEXT开头, DRAWTEXT DRAWTEXTEX DRAWYITEXT DRAWFLAGTEXT DRAWMOVETEXT 例如: {卖} ma1:=ma(c,5);

相关主题
文本预览
相关文档 最新文档