树莓派二维码识别(毕设1)

毕业设计搞了一个带预约功能的二维码门禁系统。

今天就先搞一下二维码的识别和生成,为后续工作做点铺垫。

这里不使用python模块,直接在终端用命令安装依赖环境。

  • sudo apt-get install python-imaging   //图像处理
  • sudo apt-get install zbar-tools              //二维码处理依赖环境
  • sudo apt-get install qrencode               //二维码生成qrencode库

 

我们通过os模块的函数来调用shell脚本来实现二维码识别,生成以及图像采集功能。

下面是python代码:

qrcode.py:

#! /usr/bin/env python
#-*- coding: UTF-8 -*-
import os , signal,subprocess

qrstr1="qrcode"
def qrtext(): #generate QRcode text
text=raw_input(u"enter text QRcode:") #input QRcode text
os.system("qrencode -o /home/scf/py-qr-code/createQR/"+qrstr1+".png '"+text+"'") 
#generate QRcode text
print u"qrcode in:"+qrstr1+".png"

def distinguish():
os.system("raspistill -w 320 -h 240 -o /home/scf/py-qr-code/QRimage/image.jpg")
print u"raspistill finished"
#child thread processing QRcode
qrcamera=subprocess.Popen("zbarimg --raw /home/scf/py-qr-code/QRimage/image.jpg",stdout=subprocess.PIPE,shell=True,preexec_fn=os.setsid)
qrcodetext=qrcamera.stdout.readline()
if qrcodetext!="":
print qrcodetext
else:
print u"qrcodetext is empty"
return u"QRcode: "+qrcodetext

继续阅读树莓派二维码识别(毕设1)

Qt基础

Qt窗口基类:

QMainWindow:添加了菜单栏,状态栏,工具栏,停靠窗口。

QWidget:相当于白纸,所有的空间需要自己添加。

QDialog:添加两个按钮,(确认,取消),自带返回值。

布局:

1,水平布局

2,垂直布局

3,网格布局

4,栈布局

信号与槽:

connect()最常见形式

connect(sender,signal,receiver,slot);

继续阅读Qt基础

linux分区创建及挂载(杂)

1.fdisk 分区创建 删除,2t以下的硬盘可以使用,2t以上的换用其他工具
2.mkfs 创建文件系统 20G 100G
3.mount 分区的挂载

4.df 查看分区 vda 硬盘 100G vda1 20G /home vda2 80G /opt;

mkdir /home/briup/a.txt
mkdir /opt/test/b.txt

df -h
5.查看分区情况
ls /dev/vd*
vda:第一个分区
vdb:第二个分区
6.创建新分区
sudo fdisk /dev/vdb
m:帮助文档
n:新建一个分区
p:查看分区信息
t:转化文件系统类型
w:保存更改并推出
q:退出不保存
6.给新建的分区创建文件系统
sudo mkfs /dev/vdb1
ls /sbin/mkfs*

继续阅读linux分区创建及挂载(杂)

关于shell

  • shell环境种类

    本质为文本编辑器+脚本解释器

    • Bourne Shell(/usr/bin/sh或/bin/sh)
    • bourne again shell(/bin/bash)
    • c shell(/usr/bin/csh)
    • k shell(/usr/bin/ksh)
    • shell脚本基本格式

      #!/bin/bash
      echo "shellbin是萌妹"
    • 运行shell脚本的方式

          作为可执行程序
        chmod +x ./test.sh  #使脚本具有执行权限
        ./test.sh  #执行脚本

        一定要写成./test.sh,否则无法执行。

          作为解释器参数
        /bin/sh test.sh
        /bin/php test.php

        这种方式不需要再第一行写明解释器信息。

linux文件属性

root@virtual-machine:~$ ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
……

实例中,bin文件的第一个属性用”d”表示。”d”在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为[d]则是目录
  • 当为[-]则是文件;
  • 若是[l]则表示为链接文档(link file);
  • 若是[b]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[c]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。


继续阅读linux文件属性

linux目录结构

    • /bin
      bin是Binary的缩写, 这个目录存放着最经常使用的命令。
    • /boot
      这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
    • /dev :
      dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
    • /etc:
      这个目录用来存放所有的系统管理所需要的配置文件和子目录。
    • /home:
      用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
    • /lib:
      这个目录里存放着系统最基本的动态连接共享库,几乎所有的应用程序都需要用到这些共享库。
    • /opt:
      这是给主机额外安装软件所摆放的目录。比如你安装一个mariadb数据库则就可以放到这个目录下。默认是空的。
    • /proc:
      这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
      这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。
    • /root:
      该目录为系统管理员,也称作超级权限者的用户主目录。
    • 继续阅读linux目录结构