- 博客(92)
- 资源 (19)
- 收藏
- 关注
原创 开源图像处理算子工具
做工业视觉检测AI项目的时候经常会遇到一些传统图像预处理。从网上找相关的算法编写一个测试用例感觉很麻烦。计划动手做一个图像算子的小工具。
2022-02-14 09:18:22
10069
原创 FPC/FPCA柔性线路深度学习检测
最近公司交付了一个中航FPC/FPCA的项目,产品参考:这里做个简单总结客户需求分为两部分,第一部分是产品功能性外观检测需求:如鼓包、连桥、断栅、划痕、针孔、焊盘脱落等检测;第二部分是产品完整外观检测需求:如丝印破损、脏物等检测。其中鼓包缺陷使用了多种打光方案、传统算法和深度学习结合方式。漏检率为0%,过杀率为1.5%(鼓包要求严格)...
2021-07-08 10:26:43
847
1
原创 dxf文件解析
最近做一个玻璃项目的视觉检测,需要根据dxf文件得出待检测玻璃的所有信息。计划一周时间将dxf文件解析转化为bmp图像和检测数据。暂时只做dxf文件解析和工艺封装,2021年6月份将dxf做进一步封装。dxf文件解析主要是表段中的层信息、块段时相关的块信息(线型、颜色等),实体段中要具体要显示的实体。解析完成后要对要显示的实体进行工艺封装,根据玻璃生产工艺进孔、槽等进行处理最后生成可以使用的数据。这部分的解析工作计划一周完成...
2020-12-29 11:01:23
1319
原创 光学检测思路
最近项目在做aoi,现在这类项目已经很成熟了,自己学习了一下有个简单的思路。原则是所有的目标图像像素点都是缺陷点。通过计算将所有像素点进行分类,确认像素点所属集。1.目标图像的预处理:几何处理(旋转平移),图像的特征点提取(轮廓点),图像的特征划分。2.图像矫正及增强,得到修正后的模板图像。3.进行图像像素的比较计算,分类,得到异常点。4.确认所有点的所属集。...
2020-04-27 07:36:53
400
原创 ccd相机图像处理思考
最近休息在家思考之前工作时的几个问题。1.ccd相机扫描时是基于相机坐标的,在行扫描是行偏移应该是整行出现偏差的,当然也存在行对位错误的概率,可以忽略不计。那么相机Y坐标的可以看成是对位正确的。2.相机的拍摄物宽的误差和相机焦距和拍摄物与相机坐标原点距离有关。在处理倾斜度的同时可以处理相机x坐标的误差。...
2020-04-01 16:48:57
983
转载 javascript控制treeview
<br />1.设置所选节点,如选中第二个节点<br />function SetSelNode()<br />{<br /> TreeView1.selectedNodeIndex="1";<br />} <br />2.得到所选节点的Text,ID或NodeData<br />function GetAttribute()<br />{<br /> alert(TreeView1.getTreeNode(TreeView1.selectedNodeIndex).getAttribute("Text"))
2010-09-11 09:21:00
3156
原创 asp.net中gridview中数据保存为cvs格式,datatable中
<br />跳出路径选择框后将datatable中数据保存到用户指定路径:<br />private void ExportTableToExcel(DataTable dt, string FileName)<br /> {<br /> string title = "";<br /> for (int i = 0; i < dt.Columns.Count; i++)<br /> {<br /><br /> title += dt.Columns[i].ColumnName
2010-09-07 14:31:00
792
转载 GridView中合并重复值
http://www.codeproject.com/KB/webforms/MergeGridViewCells.aspxpublic class GridDecorator{ public static void MergeRows(GridView gridView) { for (int rowIndex = gridView.Rows.Count - 2; rowIndex >= 0; rowIndex--) { GridViewRow
2010-09-02 09:31:00
1026
转载 ASP.NET 2.0中合并GridView的表头单元格
<br />ASP.NET 2.0中合并 GridView 的表头单元格<br />在实际工作中,<br />往往需要合并表格头部的单元格,<br />下面就是一个实现的例子。<br />运行结果如图:<br /><br />c# <br /><%...@ Page Language="C#" AutoEventWireup="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"<br /> "http://www.w3
2010-09-02 09:28:00
1415
转载 数据源为空时让GridView显示表头和提示
<br />asp.net 2.0中使用的GridView控件,在其源为空时默认表头不显示。我们这里想要实现的是,通过扩展GridView控件、继承GridVie、重写Render方法来实现在源为空时显示表头并提示源为空:<br />/// summary <br />/// GridView 扩展控件 <br />/// @author:jianyi0115@163.com <br />/// /summary <br />public class GridView : System.Web.UI.Web
2010-09-02 08:44:00
827
转载 javascript画图并记录坐标点
<br /> ajax想必程序员们都听说过,这个技术就是为了缓和服务器端压力和前台展示而推出的技术,实际上就是javascript和xml(DOM)组成的一个以浏览器为载体的前端客户端结构,他脱离了远程数据交互,减轻了频繁访问数据库并加强了,浏览器的能力在图形展示界面操作文件控制,都提供了很多支持,相信了解他的人都会非常喜欢他,有些人甚至认为,使用了这种技术可以使我们从复杂的mvc开发模式还原成客户端-服务器模式,所有业务逻辑全部都有前台处理。<br /> 好了废话我就不多说了,下面的代码是我做项目
2010-08-30 08:15:00
2793
转载 asp.net动态设置CSS等
<br />首先是后台给前台设置Style属性,设置控件坐标 <br /><br />前台控件: <br />Html代码 <asp:Label ID = "lblDSRText" Text = "当事人" runat = "server" name="label" Style="left: 300px; position: absolute;top:200px" BackColor="silver" ></asp:Label> <asp:Label ID = "lblDSRText" Text = "当
2010-08-30 07:59:00
3498
转载 【转】 JS调用后台带参数的方法
2010-08-15 22:03转载自 漂渺巅峰最终编辑 漂渺巅峰对于前台调用后台的方法,我们想到最多的就是用AJAX,这个是毋庸置疑的, 我就不再这里多说了。我今天主要想说的是用JS调用后台的方法。<br />对于后台往前台传值,用这种<%= nameValue%> 方法,我们是在熟悉不过了,由此,我们是否可以用同样的办法达到传值方法返回值的效果呢?<br />我在这个项目中最先想到的就是尝试这种(因为这个项目用到了VML,用AJAX以前是不行,不过,后来测试还是没有问题,不过,需要把xmlns=http
2010-08-27 08:40:00
3419
转载 C#代码与javaScript函数的相互调用
<br /> 我们通过问答的方式来为大家解答C#与JAVASCRIPT函数的相互调用: <br />1.如何在JavaScript访问C#函数? <br />2.如何在JavaScript访问C#变量? <br />3.如何在C#中访问JavaScript的已有变量? <br />4.如何在C#中访问JavaScript函数? <br />问题1答案如下: <br />javaScript函数中执行C#代码中的函数: <br />方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_cli
2010-08-26 16:08:00
654
转载 动态创建弹出div
<br />动态创建弹出div <br />answer:形式如: <br />function createDiv(){ <br />var msgObj=document.createElement("div") <br /> msgObj.setAttribute("id","msgDiv"); <br /> msgObj.setAttribute("align","center"); <br /> msgObj.style.background="white
2010-08-23 11:40:00
734
转载 SendMessage、PostMessage原理
<br />本文讲解SendMessage、PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级、中级、高级程序员进行理解,三个步骤分别为:<br />1、SendMessage、PostMessage的运行机制。<br />2、SendMessage、PostMessage的运行内幕。<br />3、SendMessage、PostMessage的内部实现。<br />注:理解这篇文章之前,必须先了解Windows的消息循环机制。<br /> <br />1、SendMessage
2010-08-21 01:12:00
602
转载 sendmessage and postmessage
PostMessage只负责将消息放到消息队列中,不确定何时及是否处理 SendMessage要等到受到消息处理的返回码(DWord类型)后才继续 PostMessage执行后马上返回 SendMessage必须等到消息被处理后才会返回。
2010-08-21 01:10:00
694
转载 InitializeCriticalSection
<br />Windows API函数声明 <br /> VOID InitializeCriticalSection( <br /> LPCRITICAL_SECTION lpCriticalSection // critical section <br /> ); <br /> 函数功能 <br /> 初始化一个临界资源对象 <br /> 参数说明 <br /> lpCriticalSection 临界资源对象指针 <br /> 返回值 <br /> 没有 <br /> 备注: <b
2010-08-21 00:50:00
924
转载 用Win32 API实现串行通信
串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。我们可以利用Windows API 提供的通信函数编写出高可移植性的串行通信程序。 在Win16中,可以利用OpenComm、CloseComm和WriteComm等函数打开、关闭和读写串口。但在Win32中,串口和其他通信设备均被作为文件处理,串口的打开、关闭和读写等操作所用的API函数与操作文件的函数相同。可通过CreateFile函数打开串口,通过CloseFile函数关闭串口,通过CommProp、DCB结构、G
2010-08-20 23:35:00
1052
转载 WaitCommEvent
作用: 为一个特指的通信设备等待一个事件发生,该函数所监控的事件是与该设备句柄相关联的一系列事件。 原型: BOOL WINAPI WaitCommEvent( __in HANDLE hFile, __out LPDWORD lpEvtMask, __in LPOVERLAPPED lpOverlapped ); 参数: hFile:指向通信设备的一个句柄,该句柄应该是由 CreateFile函数返回的。
2010-08-20 23:24:00
1491
原创 用javascript拖动DIV层
<html> <head> <title>用javascript拖动DIV层</title> <style> body{font-family:Verdana;font-size:11px;color:#333;} #win1{[position:absolute;left:100;top:100;width:200px;height:150px;border:1px solid #000;} .title{width:100%;background:#000;height:18px
2010-08-19 14:06:00
540
转载 SmtpClient 身份验证失败(authentication failed) 的原因分析
<br /> <br />使用 SmtpClient 通过 139,189,qq 邮箱的SMTP服务,发送邮件时,都不成功,返回的错误是 “身份验证失败”,而同样的情况,使用outlook express, foxmail 则可以正常发送。<br />为了搞清原因,我自己测试了一把,问题确实如此。<br />据此,可以判断,问题应该是出在 SmtpClient 本身了。而且,既然是 “身份验证失败” 的错误,那就应该出在 身份验证的环节了。为了彻底搞清楚这个问题, 我使用了抓取网络封包的方法, 分别获取了使
2010-08-05 22:14:00
6810
1
转载 多重查询SQL语句解决方案及代码
<br />我们经常会遇到多重查询问题,而长长的SQL语句往往让人丈二和尚摸不着头脑。特别是客户端部分填入查询条件时,如用普通方法将更是难上加难。<br />以下巧妙地利用"where 1=1"的恒等式(事实上很多,让它值为TRUE即可)解决此问题。<br />正文概要<br />'subject 信息标题<br />'company 发布信息的公司名称<br />'content 发布信息的内容<br />'address 公司地址<br />'infomation 公司简介<br />'note 相关说
2010-08-04 11:23:00
1967
转载 sql中的exec()使用
<br />1 :普通SQL语句可以用exec执行<br /> <br />Select * from tableName <br />exec('select * from tableName') <br />exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N <br /> <br /> <br />2:字段名,表名,数据库名之类作为变量时,必须用动态SQL<br /> <br />declare @fname varchar(20)
2010-08-04 09:56:00
3953
转载 如何在c#中使用mapx5.0(三)
<br />接下来: <br />//****************************** <br />#region 文件/打开*另存为*导出*按钮的代码 <br /><br />private void menuItem20_Click(object sender, System.EventArgs e) //打开地图文件(*.gst)(模式对话框) <br />{ <br />OpenFileDialog openFD=new OpenFileDialog(); <br />openFD.Ti
2010-08-02 22:19:00
1082
1
转载 如何在c#中使用mapx5.0(二)
<br />接着第一篇文章,继续,这是在FrMain.cs文件中除了第一篇文章里的代码外的第二部分: <br />//******************************* <br /><br />#region 创建自定义工具,用来测量距离(可以折线)和测量面积 <br />//****************************888 <br />private void mapMain_PolyToolUsed(object sender, AxMapXLib.CMapXEvents_Po
2010-08-02 22:18:00
1138
原创 c#中调用mapx5.0
<br />这是 我在.net环境中调用mapx5.0控件 的一次test,前几次网上没有发现这方面的文章,所以自己 <br />把几个代码拿出 来:这里有些代码是自动生成的,但只要把几篇文章的代码直接拷贝到工程里 就 <br />能直接运行的。 <br /><br />using System.Drawing; <br />using System.Collections; <br />using System.ComponentModel; <br />using System.Windows.Form
2010-08-02 22:14:00
972
原创 MapX从数据库读取数据形成新图层(C#)
<br />在C#中实现MapX从数据库读取数据形成新图层分为两个问题:<br />1. MapX从数据库读取数据形成新图层;<br />2. 将DataTable转换为ADO的Recordset。<br />这里的第二个问题是由第一个问题引起的,因为MapX是一个COM控件,而且它只支持ADO的数据访问方式,而C#编程时一般会使用ADO.NET方式,为此需要在两种方式之间做一下转换。(当然也可以在C#中使用ADO方式,但这毕竟是落后的方法。该解决办法可参考文章《Visual
2010-08-02 22:12:00
655
转载 使用asp.net发送邮件详解
王国荣的asp.net对发送邮件进行了一定的讲解但是不过全面。在这篇文章里, 我们在尽可能广的范围广内讲解使用 ASP.NET发送电子邮件,包括选择电子邮件格式, 优先权, 附件和电子邮件内码。现在让我们逐步探索使用ASP.NET发送电子邮件。我们将使用VB来说明例子, 但是我们最后的代码包括VB 和C # 。Step1: 包括命名空间 System.Web.Util 命名空间在ASP.NET 里。这命名空间包含送电子邮件的所有必要对象。对象是: 对象 总结 SmtpMail 代表邮件系统。发送电子邮件。M
2010-08-02 22:01:00
1699
转载 前台调用后台方法 后台调用前台JS
<br />我给你的方法如下: <br />1、后台方法: <br />protected string CsharpVoid(string strCC) <br />{ <br />strCC = "http://" + strCC; <br />return strCC; <br />} <br />2、前台页面JavaScript方法: <br /><script language="javascript" type="text/javascript"> <br />var v = "www.baid
2010-08-01 18:32:00
3938
原创 overlapped
<br />最近要研究串口通信,其中用到了overlapped结构,一直不能理解,<br />今天在网上看到有人这样解释overlapped,太经典的解释了。<br />OVERLAPPED结构主要在一些重叠IO等异步操作中起作用。 <br />即:你需要操作系统传递一批数据,于是填了一个overlapped的订单,订单上写着从哪里(数据的偏移位置)开始传输,于是你去干别的事去了。系统完成传输就打个电话(激活hEvent)叫你验收,你看到overlapped订单上系统写着的传输的数据数量验收接收的数据。<b
2010-07-29 22:12:00
764
转载 API串口
近日在看有关串口方面的书籍,尝试自己写了个向串口发送消息的函数。注意事项: 第一:打开串口 2:建议串口通信事件 3:初始化串口,设置串口参数 4:可以向串口中写入数据。要采取重叠(overlapped)的 I/o 操作。#include "windows.h"#include "iostream"using namespace std;HANDLE hComm;HANDLE hThSend;OVERLAPP
2010-07-29 22:10:00
519
原创 QueryPerformanceCounter
<br />的时间计时,有时候是非常必要的。比如播放多媒体时视频与音频的时间同步,还有在测试代码的性能时,也需要使用到非常精确的时间计时。还有测试硬件的性能时,也需要精确的时间计时。这时就需要使用QueryPerformanceCounter来查询定时器的计数值,如果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度,就跟硬件时钟的晶振一样精确的。<br />QueryPerformanceCounter 查询性能计数器 <br />The QueryPer
2010-07-29 11:21:00
501
转载 SQl查询数据库表名、表的列名
--读取库中的所有表名 <br />select name from sysobjects where xtype='u' <br /><br />--读取指定表的所有列名 <br />select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')获取数据库表名和字段<br />sqlserver中各个系统表的作用 <br /> sysaltfiles
2010-07-28 19:38:00
711
转载 SQL中一些函数调用秘密
<br />SQL中如果你调用了函数, 则你在某些特殊情况下, 需要注意函数的调用次数.<br />通常是在函数对于同一个输入参数, 但是却会返回不同的返回值的情况下需要注意.<br />之前的一个小小题目: http://www.itpub.net/thread-1051229-1-1.html<br />请通过该主题了解本帖即将讨论的内容.此贴内容:<br />QUOTE: 已知表 t ,执行 select count(*) from t; 返回值 3;<br /><br />那么以下这个SQL
2010-07-06 09:33:00
595
原创 编辑框与状态栏组合
<br />void CMainFrame::OnStatusEdit()<br />{<br /> <br /> if(c_StatusEdit.m_hWnd==NULL)<br /> {<br /> <br /> c_StatusEdit.Create(&m_wndStatusBar,ID_INDICATOR_EDIT,WS_VISIBLE|WS_BORDER);<br />logEvent(IDS_CREATE_EDIT);<br /> }<br /
2010-07-06 08:49:00
443
原创 VC++ 多文档用户界面设计
<br /> 用习惯了Delphi、VB、Windows Form(Visual C#)等称之为RAD(Rapid Application Development)的开发工具进行项目开发的都会很满足这些工具和平台提供的快速界面开发的功效:你可以很容易就可以实现一个MIS系统的管理界面,提供一个主框架,点击主框架上的某一个菜单项就打开一个处理事务的窗口,这些窗口可以重叠,可以最大/小化,一切看起来都像那么回事。但是当你在VC中进行开发的时候,发现整个世界都变了,虽然VC提供了MDI支持多文档视图的框架,但是
2010-07-05 20:54:00
964
原创 VC 图形填充
<br />l 填充区域——有如下两种填充区域的函数:<br />n 使用当前刷从点(x, y)开始向四周填充到颜色为crColor的边界:<br />BOOL FloodFill(int x, int y, COLORREF crColor); // 成功返回非0<br />n 使用当前刷从点(x, y)开始向四周填充:<br />BOOL ExtFloodFill(int x, int y, COLORREF crColor, <br />UINT nFillType);
2010-07-05 14:18:00
889
原创 VC 图形填充
<br />l 填充区域——有如下两种填充区域的函数:<br />n 使用当前刷从点(x, y)开始向四周填充到颜色为crColor的边界:<br />BOOL FloodFill(int x, int y, COLORREF crColor); // 成功返回非0<br />n 使用当前刷从点(x, y)开始向四周填充:<br />BOOL ExtFloodFill(int x, int y, COLORREF crColor, <br />UINT nFillType);
2010-07-05 14:18:00
1262
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人