在绘制PCB电路板时,我们可能会添加一些Logo或一些感兴趣的图片,使我们制作出来的PCB电路板更加好看吸引人。
问题:我为什么会要研究一下这个小问题(小技术)?
原因:我的一位同学在图书馆借到的一本书中夹了一张书签。这不是普通的书签,是用PCB电路板制成的书签,是双面的,每一面都有图画而且配有古诗。当时感觉特别NBNB。于是决定做一个。
工具:1.opencv+vs2013或matlab。
2.PhotoZoom.Pro.v6.0.2 图片无损放大工具
3.Bmp2Pcb bmp图像文件 to pcb 工具
过程:
1.找到一张喜欢的图片,将彩 {MOD}图片进行二值化变成黑白图片。这里可以采用opencv+vs2013或matlab。刚好我电脑里装了opencv所以我选择opencv。主要是没装matlab,其实用matlab也挺简单的。
这是我选的图片。这是我们学院社团的Logo,学弟刚好需要把Logo加到PCB中。
这里我使用的opencv2.4.9 程序: 程序我是在网上资料的基础上改过来的,有些地方有些问题,但是大体是好用的。
至于具体的函数使用方法在这里我就不仔细讲解了,可以看看网上的资料。
#include"stdafx.h"
#include
#include
#include
#include
#include
using namespace std;
#pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"")//运行时不显示DOS框
void sum_rgb(IplImage* src, IplImage* dst) //该函数的作用就是转灰度后二值化
{
IplImage* r = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
IplImage* g = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
IplImage* b = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
//函数 cvSplit 分割多通道数组成分离的单通道数组d
cvSplit(src, r, g, b, NULL);
IplImage* s = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
cvAddWeighted(r, 1. / 3, g, 1. / 3, 0.0, s);
cvAddWeighted(s, 2. / 3, b, 1. / 3, 0.0, s);
cvThreshold(s, dst, 100, 255, CV_THRESH_BINARY);
cvReleaseImage(&r);
cvReleaseImage(&g);
cvReleaseImage(&b);
cvReleaseImage(&s);
IplImage* s1 = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
cvCvtColor(src, s1, CV_BGR2GRAY);
cvThreshold(s1, dst,240, 255, CV_THRESH_BINARY);
}
int main()
{
cvNamedWindow("aaa", 1);
IplImage* src = cvLoadImage("D:ha.JPG");
IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, 1);
sum_rgb(src, dst);
cvShowImage("aaa", dst);
cvSaveImage("D:ha2.png", dst);
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&src);
cvReleaseImage(&dst);
return 0;
}
二值化后的图片
2.二值化后的图片格式PNG格式,运用美图秀秀将格式改为bmp格式。因为bmptopcb软件只能利用bmp格式的图片,所以要转换。
3.使用bmptopcb软件将图片转换至pcb文件,这里要选择分辨率,那一层,使用比较简单,这里不再赘述。
用Altium
Designer软件打开转换后的文件时看到的效果。
讲到这里,主体部分已经讲完了。建议大家可以建立一个Logo库把一些将常用到的Logo放到一个库中,方便调用。
注意事项:
1.图片大小问题:你选的图片可能过小,在Altium Designer中很小,以后在实际在Pcb电路板中会很小不符合实际。
因此需要放大图片。就用到了PhotoZoom.Pro.v6.0.2 图片无损放大工具。使用方法很简单,大家一看就会用。
2.在bmptopcb软件中,需要调整分辨率,直接影响pcb文件中的图片清晰程度。
3.在opencv二值化程序中,可以通过改变阈值,来调整转后的黑白图片的清晰程度。
下面展示一下我做的书签,现在还没有发板子,等板子做好后我再传一张图给大家看看。
有什么问题,欢饮大家留言 ps我邮箱454076224@qq.com
--------------------------------------------------2016.05.01 更新----------------------------------------------------------------
好久没有做logo了,这次又心血来潮想在自己画的板子上做上一点自己特有的标记图案,所以又把这篇技术文档又翻出来了。现在对上边的一些问题做下跟新。
1.前面是用的opencv对彩 {MOD}图像进行的处理,但是配置opencv太麻烦了 所以现在改用matalab来进行图像处理。
aa=imread('d:1.jpg'); %读取图片
figure(1);
imshow(aa);
bb=rgb2gray(aa); %彩 {MOD}图转灰度图
figure(2);
imshow(bb);
cc=im2bw(bb,0.45); %灰度图转二值黑白图 后面一个参数是调阈值 0—1
figure(3);
imshow(cc);
将图片处理好后,要保存为bmp图片格式的,应为下一步软件需要bmp的图片格式。
2.BMP2PCB用法
先加载图片,选择转换操作的格式,选择分辨率的,按住ctrl键,选择图片上需要保存的颜 {MOD}。
说明一下:该软件可以转换彩 {MOD}的图片,但是转换的效果并不好,所以我建议还是将彩 {MOD}图片先转换为二值化的黑白图片在用这个工具比较好。
3.转换好后会生成一个pcb文件,但是会遇到用 Altium designer(本人用的是AD13版本也没有pcb显示出来) 去打开,但是没有pcb图显示出来。这是因为AD13版本需要安装导入插件。好像BMP2PCB生成的pcb文件是支持protel软件的,对新版本的AD软件不太支持。需要在AD里安装导入文件的插件。
点击DXP-》Plug-ins and updates -》选择importers and Exporters
现在需要选择一些插件了,其实我也不知道哪个插件能解决这个问题,最后将所有插件都安装了,就好使了。
就是为了这个头像又把这个老技术又翻了出来。