使用Eric构建使用Caffe应用程序

来源:互联网 发布:一加手机工具箱网络 编辑:程序博客网 时间:2024/06/15 23:19

训练好的Caffe网络结构,可以固定下来,直接载入程序作为数据库接口使用。本文使用Eric构建运行于Python环境下的图片识别应用程序。

1.编译好Pycaffe之后,安装Eric4、PyQt4。

   软件中心安装 Eric4、PyQt4;


2.配置Eric:

     根据程序设置向导配置Eric使用的Python版本、其他设置。


3.建立项目:

    点击Eric主界面,Project->new ,设置项目名称、位置;

eric新建项目  

 

3、界面设计:

将左侧的【源代码】选项卡切换至【窗体】选项卡(左数第二个)。

选择窗体

右键空白区域,选择【新建窗体】。

新建窗体

在弹出的对话框中选择【对话框】。

新建对话框


点击Ok之后,填写保存位置,生成一个QtDesigner可以修改的UI文件。

工程左栏右键点击UI文件,点击Open in Qt-Designer弹出设计界面,便可以进行界面设计。


4、设计界面,建立自定义槽

对于Button文件,可以在设计界面添加空槽,再进行代码文件内编辑

信号和槽


也可以不在设计界面添加槽,保存UI文件。

回到工程界面,右键点击编译,生成UI_.....Py文件;

再点击生成对话框代码,生成类代码文件。


因为MCV设计模式使设计和逻辑分离,可以设计好界面后,修改任意类代码不影响界面效果。

默认槽的函数形式为:

若按钮名称为btnParse,则类内槽函数为

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @pyqtSignature("")  
  2. def on_btnParse_clicked(self):  
程序编译运行后,按动按钮btnParse,触发on_btnParse_clicked(self) 设定的行为。

 5.设计逻辑

     我的程序主要使用了类文件里面的成员函数on_RecogOne_clicked(self);

     以下是参考代码:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. import ClassifyFace as cf  
  2. .......................................  
  3.  
  4.     @pyqtSignature("")  
  5.     def on_RecogOne_clicked(self):  
  6.         """ 
  7.         Slot documentation goes here. 
  8.         """  
  9.         #self.tvResult.clear()  
  10.         fName = self.lblPath.text()  
  11.         #print ("fName:%s", fName )#u'Please, load a log file'  
  12.           
  13.         # 获取地址框内的文件名  
  14.         pattern = self.txtReToMatch.displayText();  
  15.         print ("pattern:%s", pattern)#fileName!  
  16.           
  17.         path = pattern.toAscii();  
  18.         path=path[7:];path=str(path )# 异常必要的强制转化!  
  19.         print path;  
  20.           
  21.         #载入识别过程  
  22.         pathSrc =path  
  23.         Out, pathRec=cf.recogImg(path);#识别函数  
  24.   
  25.         Num=-1;idx =0;  
  26.         if(Out ==-1):  
  27.             print ("Face Detect fail!");  
  28.             return;  
  29.         else:  
  30.             for i in Out:  
  31.                 if (i ==1):  
  32.                     Num=idx;  
  33.                 idx+=1;  
  34.                   
  35.         #画出修改图像  
  36.         pixmapO=QPixmap()  
  37.         pixmapO.load(pathRec);  
  38.         itemO=QGraphicsPixmapItem(pixmapO)  
  39.         self.scene2.addItem(itemO)  
  40.         self.graphicsView_Out.setScene(self.scene2)  
  41.           
  42.         if(Num==-1):  
  43.             print ("The Face is not a Baby!");  
  44.         else:  
  45.             print ("The serias %d face is a baby face"%Num);  
  46.             #画出脸部图像  
  47.             pathf=path+"face"+str(Num)+".jpg";  
  48.             pixmapf=QPixmap();  
  49.             pixmapf.load(pathf);  
  50.             itemf=QGraphicsPixmapItem(pixmapf)  
  51.             self.scene3.addItem(itemf)  
  52.             self.graphicsView_Face.setScene(self.scene3)  
  53.           
  54.         OutStr ="The serias"+ str(Num)+ " X face is a baby face"  
  55.         self.label_Outshow.setText(OutStr);  
  56.       
  57.         #显示原图像  
  58.         pixmap=QPixmap()  
  59.         pixmap.load(pathSrc);  
  60.         item=QGraphicsPixmapItem(pixmap)  
  61.         self.scene.addItem(item)  
  62.         self.graphicsView_Src.setScene(self.scene)  

6.Debug调试程序

注意事项:调试时在主程序打开文件窗口按下F2键,否则可能出现异常提示;

                    依次关闭调试使用shift+F10按键,不要按退出键按钮;

                    

软件效果:


file:///home/wishchin/图片/smplayer_screenshots/屏幕截图 2015-04-09 12:27:33.png


程序运行效果:



运行过程中:出现cublas无法构建的事,好像是可以忽视的.............


0 0
原创粉丝点击