资源简介
QT+OpenCV+VS Gerber光绘文件识别
代码片段和文件信息
#include “gerber.h“
// 25.4 = 1000 * 0.0254
#define RATIO (PcbUnit ? 1 : 25.4f)
/**********************************************************************
【C++ 光绘文件解析驱动】
***********************************************************************/
// 数据清除
void Gerber::DataClear()
{
ExtMinX = 999999;
ExtMinY = 999999;
ExtMaxX = 0;
ExtMaxY = 0;
PolygonDot.clear();
LastCoor.x = 0;
LastCoor.y = 0;
DotFill = false; // 图案填充标志位
DotLine = false; // 画点还是画线标志
CircleDir = false; // 圆周运动方向,false:顺时针方向,true:逆时针方向
CircleOffOn = false; // 圆周运动方向开关
PcbUnit = false; // 计量单位,false:英寸,True:毫米
PcbProjectName = ““; // 图像名称
FillInvisible = false; // 填充挖除标志,false:填充,true:挖除
HoleDiameterId.clear();
HoleDiameterForm.clear();
HoleDiameterDia1.clear();
HoleDiameterDia2.clear();
DotDataNew.DotForms.clear();
DotDataNew.DotHoleLengths.clear();
DotDataNew.DotPlateLengths.clear();
DotDataNew.WeldingDots_user.clear();
NowHoleId = -1; // 当前孔径ID号
}
// 在字符串中搜索自定字符
int Gerber::StringCharNum(String str char ch)
{
const char *buf = str.data();
int num = 0;
int i = 0;
while (i < str.length()) {
if (buf[i++] == ch) num++;
}
return num;
}
vector Gerber::CoordinateStr(String StrData)
{
char temp[10][20] = { ““““ };
int j = 0 num = 0;
vector ret;
// 字符串为空
if (StrData.empty()) return ret;
const char *buf = StrData.data();
for (int i = 0; i < StrData.length(); i++)
{
if (buf[i] == ‘ ‘) break;
if ((buf[i] == ‘X‘) || (buf[i] == ‘Y‘) ||
(buf[i] == ‘D‘) || (buf[i] == ‘G‘) ||
(buf[i] == ‘J‘) || (buf[i] == ‘I‘) ||
(buf[i] == ‘M‘)) {
j = 0; num++;
if (num > 19)
break;
}
if (num > 0 && j < 19) {
temp[num - 1][j++] = buf[i];
temp[num - 1][j] = ‘\0‘;
}
}
vector OutStr(num);
for (int i = 0; i < num; i++) {
OutStr[i] = temp[i];
}
return OutStr;
}
// 指令解析尺寸识别 IN:英寸[fasle],MM:毫米[true]
void Gerber::Order_MO(String str)
{
if (str.find(“%MOIN“) == 0)
PcbUnit = false;
else PcbUnit = true;
}
// 指令解析图像名称 %IN “JYSH-PWRL_V10D_20180706“*%
void Gerber::Order_IN(String str)
{
PcbProjectName = ““;
}
// 指令解析明确极性使用LPC,暗极性使用LPD。【LPD是填充,LPC是挖除,OpenCv 下多边形填充很卡,填充重叠会死程序】
void Gerber::Order_LP(String str)
{
if (str.find(“LPC“) >= 0)
FillInvisible = false;
else FillInvisible = true;
}
// 指令解析孔径描述/光圈描述
void Gerber::Order_AD(String str)
{
int he = str.find(“AD“);
int ne = 0;
if ((ne = str.find(“C“)) > 0) HoleDiameterForm.push_back(“C“); // 圆形
else if ((ne = str.find(“R“)) > 0) HoleDiameterForm.push_back(“R“); // 长方
else if ((ne = str.find(“O“)) > 0) HoleDiameterForm.push_back(“O“); // 椭圆形
else if ((ne = str.find(“P“)) > 0) HoleDiameterForm.push_back(“P“); // 正多边形
else return; //特殊光圈
// ID识别
String idbuf = str.substr(he + 3 ne - (he + 3));
HoleDiameterId.push_back(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-09 17:57 光绘文件\
文件 1436 2018-07-12 09:08 光绘文件\215384.2nd
文件 475838 2018-07-12 09:08 光绘文件\215384.bl
文件 859816 2018-07-12 09:08 光绘文件\215384.bo
文件 396094 2018-07-12 09:08 光绘文件\215384.bs
文件 11539 2018-07-12 09:08 光绘文件\215384.drl
文件 6180 2018-07-12 09:08 光绘文件\215384.pb
文件 18499 2018-07-12 09:08 光绘文件\215384.pt
文件 45065 2018-07-12 09:08 光绘文件\215384.rout
文件 586183 2018-07-12 09:08 光绘文件\215384.tl
文件 398781 2018-07-12 09:08 光绘文件\215384.to
文件 162460 2018-07-12 09:08 光绘文件\215384.ts
目录 0 2018-11-09 17:57 光绘文件\识别图像\
文件 4307981 2018-10-31 17:09 光绘文件\识别图像\215384_2nd.jpg
文件 10472379 2018-10-31 17:11 光绘文件\识别图像\215384_bl.jpg
文件 12393377 2018-10-31 17:12 光绘文件\识别图像\215384_bo.jpg
文件 8113791 2018-10-31 17:48 光绘文件\识别图像\215384_bs.jpg
文件 4694265 2018-10-31 17:30 光绘文件\识别图像\215384_drl.jpg
文件 3585395 2018-10-31 17:32 光绘文件\识别图像\215384_pb.jpg
文件 4967900 2018-10-31 17:33 光绘文件\识别图像\215384_pt.jpg
文件 5603336 2018-10-31 17:34 光绘文件\识别图像\215384_rout.jpg
文件 11514750 2018-10-31 17:35 光绘文件\识别图像\215384_tl.jpg
文件 13155835 2018-10-31 17:36 光绘文件\识别图像\215384_to.jpg
文件 9660462 2018-10-31 17:37 光绘文件\识别图像\215384_ts.jpg
目录 0 2018-11-09 17:57 光绘文件识别源码\
目录 0 2018-11-09 17:57 光绘文件识别源码\.vs\
目录 0 2018-11-09 17:57 光绘文件识别源码\.vs\pcb\
目录 0 2018-11-09 17:57 光绘文件识别源码\.vs\pcb\v14\
文件 45568 2018-11-09 17:55 光绘文件识别源码\.vs\pcb\v14\.suo
目录 0 2018-11-09 17:57 光绘文件识别源码\pcb\
文件 335417 2018-11-06 14:41 光绘文件识别源码\pcb\1.jpg
............此处省略118个文件信息
- 上一篇:Excel地图插件ExcelMaps
- 下一篇:野火stm32-库开发初级篇-例程
相关资源
- QT TCP文件传输
- QT下多线程 UDP socket
- Linux_Qt_5.5.1_64
- opencv-4.4.0-vc14_vc15.rar 官网
- mingw-w64压缩包
- 视频摄像头SSD模型目标检测.zip
- opencv420_cuda_dnn编译_缓存文件.zip
- OpenCV3编程入门+学习opencv+opencv函数手
- VTK8.0 and VTK8.1
- Qt5.12.3 vs2017 32bit QtWebEngine支持mp4播放
- SeetaFace2Qt.rar
- PyQt5-5.11.2-5.11.1-cp35.cp36.cp37.cp38-none-w
- OpenCV 3.2 官方手册 CHM
- 完整版基于OPENCV的车牌识别系统源码
- Windows下Qt5.12.9的Qtwebengine包含音视频支
- 编译好的opencv3.4.1 _ contrib
- opencv3书本配套代码opencv2程序
- Qt 5.7.1 静态编译库直接使用
- opencv_contrib-4.4.0.zip
- opencv_contrib-master.zip
- opencv2计算机视觉编程手册中文清晰扫
- Qt 5.11 最新最全文档
- opencv-3.4.3+opencv-contrib3.4.3.zip
- opencv-4.1.0-windows版本
- 用于编译OPENCV-3.4.2版本所需的FFMPEG和
- DeepNude 2.0.rar
- opencv-3.3.0-windows版本
- opencv411_contrib_vc14_x86_x64.zip
- vs2013+opencv3.1.0
- openCV库文件卷2
评论
共有 条评论