绪论——项目说明
本项目是一个应用于木家具加工的喷漆自动控制环节,目的是通过图像技术,获得木板在传输带上的几何位置,精确控制喷漆设备,达到自动寻找木板并喷漆的目的。
因为是一个控制系统的一部分,所以界面部分只是为了调试方便,说明问题足以,发布的意义也即是抛砖引玉。
1.结果效果
2.思路
2.1各部分介绍
(1)使用C++完成图像处理的过程,实际中可以是任何处理办法,甚至是任何的语言,如MATLAB、python,生成dll的方法因语言有所差别。
本项目是提取图片中的木板,并输出门板的几何宽(int)及宽的一半(double),对图像 做灰度化处理,并把图像处理参数写在灰度图像上。
(2)C#界面调用C++的dll。实际中,算法的入参需要通过界面传入、输出信息需要在界面中显示(实际项目中,当然是不要输出的,直接传递给喷漆的控制设备就够了)。
(3)在初学者的操作者,为了理解界面与内核的调用方法,做了一个最简单测试代码。
2.图像处理
dllmain.cpp此代码为生成dll的系统代码,勿需修改
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Image_Progress.cpp图像处理部分
注:因为用到json的参数传递方法,会用到配置json的内容。我将需要用到的头文件等上传到百度云。
3.C#界面
在界面中至少要完成以下几个内容:读取图像、将读取的图像显示(如果有必要)、将读取到的图像路径传递给dll、读取算法的结果数据并显示之、读取算法的处理结果图像的路径并显该结果的图像、按钮操作、保存算法结果到文件(如txt、xml等)。
(1)读取图像部分
使用按钮打开对应文件夹,为了方便期间,可以预设只显示图像格式的文件(jpg、bmp等);双击打开;弹出对话框显示读取到的图像;显示读取到的图像。
(2)计算部分
计算部分实际的操作是调用dll的内容。并将计算结果的内容从dll中取回,显示在对应位置,处理结果的图像做一显示。
(3)测试部分
通过点击按钮,将另一个“算法”的dll调用,并获取相应内容,显示在界面;用以表明界面和内核的调用没有问题。
4.配置
(1)json环境的配置
在使用了json方法做参数传递时,需要用到json的库。为了方便项目的移植,在此,景相应内容直接放在H:\项目\门板\代码\c++\大轮廓提取\Rectangle\image_progres下。
(2)C#环境配置
项目链接: https://pan.baidu.com/s/1C3wMRK09F-Izfv7c0y-Dqw,提取密码:dq4d。
注:以上项目是较完整的体现参数传递、返回等整个过程。