linux(centos)安装NVIDIA显卡驱动,安装CUDA,安装tensorflow

装系统的时候,各种对应的版本需要对上,不然中间会有各种坑,系统崩溃等等。ubunt装了几次各种问题,最后用centos 顺利的装好了。

写文章的时候 tensorflow只支持CUDA9.0, cuDNN v7.0, 所以需要装CUDA9.0,不能直接装最新版。(CUDA9.0支持 ubutnu17.04, 不支持最新的Ubuntu 18, centos可以忽略,支持centos7.)

安装步骤:

0 首先 按照 tensorflow官方安装教程来

https://tensorflow.google.cn/install/install_linux。

1 安装 gcc 内核

可参考(https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#verify-kernel-packages)

yum -y install gcc kernel-devel kernel-headers

2 添加Repo源

阿里云源 国内更新快
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

上面源是为了装 nvidia驱动,下面这个是装python相关的。
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum install yum-plugin-fastestmirror

python相关源
yum -y install epel-release

yum makecache

3 安装NVIDIA显卡驱动

先安装nvidia-detect,然后运行 nvidia-detect , 会显示显卡对应驱动的版本 kmod-nvidia, 安装检测出来的版本就可以了.

$ yum install nvidia-detect

$ nvidia-detect

$ yum install kmod-nvidia

我按照个过程安装完以后就可以了,有些教程中需要屏蔽 nouveau 弄不好会把系统搞坏。

(也可以手动安装从NVIDIA官网下载驱动安装,期间需要停掉图像界面,中间可能有各种问题,推荐用yum/apt安装)

4 安装CUDA

按照 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/ 官方教程进行即可,安卓cuda最后一步的时候,不要直接 yum install cuda,这样会装到最新版本,需要装。yum install cuda-9.0 然后按照教程添加环境变量到 /etc/profile 和 .bashrc 中

5 安装 cuDNN

下载 https://developer.nvidia.com/cudnn , cudnn 需要注册 nvidia 开发者账号, 然后下载 Download cuDNN v7.0.4 (Nov 13, 2017), for CUDA 9.0, 然后:解压,copy

$ tar -xzvf cudnn-9.0-linux-x64-v7.tgz

$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

 

6 安装 tensorflow

有些可能没有 pip, 先装 python-pip, python-dev,然后pip install tensorflow-gpu 即可,如果中间出现依赖然间包冲突,把低版本的卸载掉重新装。 在pip 安装的时候可以在后面加上 -i http://pypi.mirrors.ustc.edu.cn/simple/ 可以提高速度,以下是几个国内的pip源。

阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

python27 future 模块

有时我们用一些模块的时候保如下错误:
ImportError: No module named future.builtins

查询是这个引用了一些:python3+的特性为了兼容会需要 future模块,

pip install future
就可以解决了。
 

以太坊客户端Geth命令用法-参数详解

Geth在以太坊智能合约开发中最常用的工具(必备开发工具),一个多用途的命令行工具。
熟悉Geth可以让我们有更好的效率,大家可收藏起来作为Geth命令用法手册。 本文主要是对geth help的翻译,基于最新的geth 1.7.3-stable版本。

命令用法

geth [选项] 命令 [命令选项] [参数…]

版本

1.7.3-stable

命令

account    管理账户
attach     启动交互式JavaScript环境(连接到节点)
bug        上报bug Issues
console    启动交互式JavaScript环境
copydb     从文件夹创建本地链
dump       Dump(分析)一个特定的块存储
dumpconfig 显示配置值
export     导出区块链到文件
import     导入一个区块链文件
init       启动并初始化一个新的创世纪块
js         执行指定的JavaScript文件(多个)
license    显示许可信息
makecache  生成ethash验证缓存(用于测试)
makedag    生成ethash 挖矿DAG(用于测试)
monitor    监控和可视化节点指标
removedb   删除区块链和状态数据库
version    打印版本号
wallet     管理Ethereum预售钱包
help,h     显示一个命令或帮助一个命令列表

ETHEREUM选项:

--config value          TOML 配置文件
--datadir “xxx”         数据库和keystore密钥的数据目录
--keystore              keystore存放目录(默认在datadir内)
--nousb                 禁用监控和管理USB硬件钱包
--networkid value       网络标识符(整型, 1=Frontier, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) (默认: 1)
--testnet               Ropsten网络:预先配置的POW(proof-of-work)测试网络
--rinkeby               Rinkeby网络: 预先配置的POA(proof-of-authority)测试网络
--syncmode "fast"       同步模式 ("fast", "full", or "light")
--ethstats value        上报ethstats service  URL (nodename:secret@host:port)
--identity value        自定义节点名
--lightserv value       允许LES请求时间最大百分比(090)(默认值:0) 
--lightpeers value      最大LES client peers数量(默认值:20)
--lightkdf              在KDF强度消费时降低key-derivation RAM&CPU使用

开发者(模式)选项:

--dev               使用POA共识网络,默认预分配一个开发者账户并且会自动开启挖矿。
--dev.period value  开发者模式下挖矿周期 (0 = 仅在交易时) (默认: 0)

ETHASH 选项:

--ethash.cachedir                        ethash验证缓存目录(默认 = datadir目录内)
--ethash.cachesinmem value               在内存保存的最近的ethash缓存个数  (每个缓存16MB ) (默认: 2)
--ethash.cachesondisk value              在磁盘保存的最近的ethash缓存个数 (每个缓存16MB) (默认: 3)
--ethash.dagdir ""                       存ethash DAGs目录 (默认 = 用户hom目录)
--ethash.dagsinmem value                 在内存保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: 1)
--ethash.dagsondisk value                在磁盘保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: 2)

交易池选项:

--txpool.nolocals            为本地提交交易禁用价格豁免
--txpool.journal value       本地交易的磁盘日志:用于节点重启 (默认: "transactions.rlp")
--txpool.rejournal value     重新生成本地交易日志的时间间隔 (默认: 1小时)
--txpool.pricelimit value    加入交易池的最小的gas价格限制(默认: 1)
--txpool.pricebump value     价格波动百分比(相对之前已有交易) (默认: 10)
--txpool.accountslots value  每个帐户保证可执行的最少交易槽数量  (默认: 16)
--txpool.globalslots value   所有帐户可执行的最大交易槽数量 (默认: 4096)
--txpool.accountqueue value  每个帐户允许的最多非可执行交易槽数量 (默认: 64)
--txpool.globalqueue value   所有帐户非可执行交易最大槽数量  (默认: 1024)
--txpool.lifetime value      非可执行交易最大入队时间(默认: 3小时)

性能调优的选项:

--cache value                分配给内部缓存的内存MB数量,缓存值(最低16 mb /数据库强制要求)(默认:128)
--trie-cache-gens value      保持在内存中产生的trie node数量(默认:120)

帐户选项:

--unlock value              需解锁账户用逗号分隔
--password value            用于非交互式密码输入的密码文件

API和控制台选项:

--rpc                       启用HTTP-RPC服务器
--rpcaddr value             HTTP-RPC服务器接口地址(默认值:“localhost”)
--rpcport value             HTTP-RPC服务器监听端口(默认值:8545)
--rpcapi value              基于HTTP-RPC接口提供的API
--ws                        启用WS-RPC服务器
--wsaddr value              WS-RPC服务器监听接口地址(默认值:“localhost”)
--wsport value              WS-RPC服务器监听端口(默认值:8546)
--wsapi  value              基于WS-RPC的接口提供的API
--wsorigins value           websockets请求允许的源
--ipcdisable                禁用IPC-RPC服务器
--ipcpath                   包含在datadir里的IPC socket/pipe文件名(转义过的显式路径)
--rpccorsdomain value       允许跨域请求的域名列表(逗号分隔)(浏览器强制)
--jspath loadScript         JavaScript加载脚本的根路径(默认值:“.”)
--exec value                执行JavaScript语句(只能结合console/attach使用)
--preload value             预加载到控制台的JavaScript文件列表(逗号分隔)

网络选项:

--bootnodes value    用于P2P发现引导的enode urls(逗号分隔)(对于light servers用v4+v5代替)
--bootnodesv4 value  用于P2P v4发现引导的enode urls(逗号分隔) (light server, 全节点)
--bootnodesv5 value  用于P2P v5发现引导的enode urls(逗号分隔) (light server, 轻节点)
--port value         网卡监听端口(默认值:30303)
--maxpeers value     最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:25)
--maxpendpeers value    最大尝试连接的数量(如果设置为0,则将使用默认值)(默认值:0)
--nat value             NAT端口映射机制 (any|none|upnp|pmp|extip:<IP>) (默认: “any”)
--nodiscover            禁用节点发现机制(手动添加节点)
--v5disc                启用实验性的RLPx V5(Topic发现)机制
--nodekey value         P2P节点密钥文件
--nodekeyhex value      十六进制的P2P节点密钥(用于测试)

矿工选项:

--mine                  打开挖矿
--minerthreads value    挖矿使用的CPU线程数量(默认值:8)
--etherbase value       挖矿奖励地址(默认=第一个创建的帐户)(默认值:“0”)
--targetgaslimit value  目标gas限制:设置最低gas限制(低于这个不会被挖?) (默认值:“4712388”)
--gasprice value        挖矿接受交易的最低gas价格
--extradata value       矿工设置的额外块数据(默认=client version)

GAS价格选项:

--gpoblocks value      用于检查gas价格的最近块的个数  (默认: 10)
--gpopercentile value  建议gas价参考最近交易的gas价的百分位数,(默认: 50)

虚拟机的选项:

--vmdebug        记录VM及合约调试信息

日志和调试选项:

--metrics            启用metrics收集和报告
--fakepow            禁用proof-of-work验证
--verbosity value    日志详细度:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)
--vmodule value      每个模块详细度:以 <pattern>=<level>的逗号分隔列表 (比如 eth/*=6,p2p=5)
--backtrace value    请求特定日志记录堆栈跟踪 (比如 “block.go:271”)
--debug                     突出显示调用位置日志(文件名及行号)
--pprof                     启用pprof HTTP服务器
--pprofaddr value           pprof HTTP服务器监听接口(默认值:127.0.0.1)
--pprofport value           pprof HTTP服务器监听端口(默认值:6060)
--memprofilerate value      按指定频率打开memory profiling    (默认:524288)
--blockprofilerate value    按指定频率打开block profiling    (默认值:0)
--cpuprofile value          将CPU profile写入指定文件
--trace value               将execution trace写入指定文件

WHISPER实验选项:

--shh                        启用Whisper
--shh.maxmessagesize value   可接受的最大的消息大小 (默认值: 1048576)
--shh.pow value              可接受的最小的POW (默认值: 0.2)

弃用选项:

--fast     开启快速同步
--light    启用轻客户端模式

其他选项:

help, -h    显示帮助


来源:https://learnblockchain.cn/2017/11/29/geth_cmd_options/

机器学习降维方法

特征降维方法包括:Lasso,PCA,小波分析,LDA,奇异值分解SVD,拉普拉斯特征映射,SparseAutoEncoder,局部线性嵌入LLE,等距映射Isomap。

1. LASSO通过参数缩减达到降维的目的。

LASSO(Least absolute shrinkage and selection operator, Tibshirani(1996))
该方法是一种压缩估计,通过构造一个罚函数得到一个较为精炼的模型,使得压缩一些系数,同时设定一些系数为零。英雌保留了子集收缩的优点,,是一种处理具有复共线性数据的有偏估计。Lasso 的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于 0 的回归系数,得到可以解释的模型。

2. 主成分分析PCA

PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。
设有m条n维数据。

1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵C=\frac{1}{m}XX^\mathsf{T}
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据

PCA降维过程请参考http://www.cnblogs.com/zhangchaoyang/articles/2222048.html

3. 小波分析

小波分析有一些变换的操作降低其他干扰可以看做是降维。
http://www.360doc.com/content/15/0613/14/21899328_477836495.shtml

4. 线性判别LDA

线性判别式分析(Linear Discriminant Analysis),简称为LDA。也称为Fisher线性判别(Fisher Linear Discriminant,FLD),是模式识别的经典算法,在1996年由Belhumeur引入模式识别和人工智能领域。

基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。

LDA与前面介绍过的PCA都是常用的降维技术。PCA主要是从特征的协方差角度,去找到比较好的投影方式。LDA更多的是考虑了标注,即希望投影后不同类别之间数据点的距离更大,同一类别的数据点更紧凑。

详细请参考http://www.cnblogs.com/zhangchaoyang/articles/2644095.html

5. 拉普拉斯映射

拉普拉斯特征映射将处于流形上的数据,在尽量保留原数据间相似度的情况下,映射到低维下表示。

这里写图片描述

求解广义特征向量,取前几个非零最小特值对应的特向,即为原数据在低维下的表示。
资料来源于:http://blog.csdn.net/yujianmin1990/article/details/48420483

 

6. 深度学习SparseAutoEncoder

稀疏自编码就是用少于输入层神经元数量的隐含层神经元去学习表征输入层的特征,相当于把输入层的特征压缩了,所以是特征降维。
详细请参考http://blog.csdn.net/whiteinblue/article/details/20639629

7. 矩阵奇异值分解SVD

在PCA算法中,用到了SVD,类似PCA,可以看成一类。

8. LLE局部线性嵌入

Locally linear embedding(LLE)是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构。LLE可以说是流形学习方法最经典的工作之一。很多后续的流形学习、降维方法都与LLE有密切联系。

LLE算法认为每一个数据点都可以由其近邻点的线性加权组合构造得到。算法的主要步骤分为三步:(1)寻找每个样本点的k个近邻点;(2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。具体的算法流程如图2所示:

这里写图片描述

这里写图片描述
这里写图片描述

9. Isomap等距映射

Isomap是一种非迭代的全局优化算法,通过一种原本试用于欧式空间的算法MDS,达到降维的目的。

参考资料:

http://www.36dsj.com/archives/26723

 

转自:http://blog.csdn.net/u014772862/article/details/52335970

centos安装python librtmp包

安装librtmp包需要依赖环境较多,机器上已经安装了python2.7版本,安装librtmp包之前需要先安装依赖环境。

1、安装gcc和依赖包

yum install gcc* python-devel libffi-dev* -y

其实以下步骤都走弯路了,大多数直接用pip 直接安装就可以了,安装太慢的切换到国内的pip源,找不到的 pip serach一下,最后那个是安装 python-librtmp就可以了。

2、安装librtmp
从git上下载源码:

git clone git://git.ffmpeg.org/rtmpdump
cd rtmpdump/librtmp/
make && make install

3、安装setuptools

wget -S https://pypi.python.org/packages/f7/83/2865ee5727b46234c68efb833363dbce1922a191dd46e246853246a46182/setuptools-24.0.2.zip#md5=b7e888eb6867d94ecaf1af7a26a56c72
unzip setuptools-24.0.2.zip
cd setuptools-24.0.2
python setup.py install

4、安装cffi

wget -S https://pypi.python.org/packages/83/3c/00b553fd05ae32f27b3637f705c413c4ce71290aa9b4c4764df694e906d9/cffi-1.7.0.tar.gz#md5=34122a545060cee58bab88feab57006d
tar -zxvf cffi-1.7.0.tar.gz
cd cffi-1.7.0
python setup.py install

5、安装librtmp

wget -S https://pypi.python.org/packages/48/a6/33b1a5864e22de3e59dd29fcbc2602462511c04a31057b16baec639d7d4f/python-librtmp-0.3.0.tar.gz#md5=f7afe8d463214072281998fa84553927
tar -zxvf python-librtmp-0.3.0.tar.gz
cd python-librtmp-0.3.0
python setup.py install

6、检验安装是否成功

输入python命令符,import librtmp,报错:

ImportError: librtmp.so.1: cannot open shared object file: No such file or directory

解决方法:查找到librtmp.so.1路径,复制到lib64目录下即可;

find / -name librtmp.so.1
cp /usr/local/lib/librtmp.so.1 /usr/lib64/

再次输入python命令符,import librtmp,未报错,安装librtmp包成功!

 

转自:http://blog.csdn.net/zxy987872674/article/details/78022953

python opencv 安装

有人称安装opencv是个玄学问题。折腾了两天才装好,中间走了各种歪路,终于整好了,赶紧记录下来。

最终还是靠官网文档装好的,

https://opencv.org/releases.html

https://docs.opencv.org/3.3.0/dd/dd5/tutorial_py_setup_in_fedora.html

第一步,安装numpy 和opencv:

$ yum install numpy   #这步如果装了可以忽略

$ yum install opencv*

完成了么?可能完成了也可能没完成。

import cv2
cap = cv2.VideoCapture(‘xxx.avi/flv/mpg’)
print(cap.read())

如果 输出 (False, None) ,那么恭喜你,开始下面步骤吧。(如果不需要视频处理功能的话,可能就够用了。)

这一步安装完成的一般都是低版本的,视频支持不完善,所有就有了,下面的步骤。

 

第二步,各种依赖:

yum install cmake
yum install python-devel numpy
yum install gcc gcc-c++
yum install gtk2-devel
yum install libdc1394-devel
yum install libv4l-devel
yum install ffmpeg-devel
yum install gstreamer-plugins-base-devel
yum install libpng-devel
yum install libjpeg-turbo-devel
yum install jasper-devel
yum install openexr-devel
yum install libtiff-devel
yum install libwebp-devel
yum install tbb-devel
yum install eigen3-devel
yum install doxygen (貌似是文档相关的可以不装)
不要嫌多,一个一个弄,不然还得回来。这里大多数包安装应该都没啥问题, 个别的 ffmpeg-devel 会出现,找不到这个包的情况。
执行下面两个操作扩展源。
rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
然后在 yum install ffmpeg ffmpeg-devel ,中间引文网络原因,各种超时,各种重试,最终还是安装成功了。

第三步,开始安装opencv

用git下载
yum install git
git clone https://github.com/opencv/opencv.git
或者是
wget https://github.com/opencv/opencv/archive/3.3.0.zip
unzip 3.3.0.zip

然后进入该目录, 注意直接cmake 是不可以的,回报个错误。需要先建个目录

mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

make & make instal

经过漫长的等待。 完成。

把cv2.so 文件考到python所在目录的包文件里覆盖原来的cv2.so

mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/site-packages

环境变量这一步坑了,我好久。从网上说是要找一个 libopencv_ffmpeg.so 的文件就可以了,但是死活找不到这个文件,又重新编译了一遍还是没有。还有一个坑不是在同一个终端执行的测试不行。

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages

最后加上这一部就可以了。

开始的测试代码最后执行 输出

(True, array([[[216, 197, 178],。。。。 [161, 176, 187]]], dtype=uint8))

 

tkinter 常用方法和参数

1、使用tkinter.Tk() 生成主窗口(root=tkinter.Tk());
root.title(‘标题名’)         修改框体的名字,也可在创建时使用className参数来命名;
root.resizable(0,0)        框体大小可调性,分别表示x,y方向的可变性;
root.geometry(‘250×150’)  指定主框体大小;
root.quit()                退出;
root.update_idletasks()
root.update()             刷新页面;

2、初级样例:

 import tkinter
 root=tkinter.Tk() #生成root主窗口
 label=tkinter.Label(root,text='Hello,GUI') #生成标签
 label.pack()        #将标签添加到主窗口
 button1=tkinter.Button(root,text='Button1') #生成button1
 button1.pack(side=tkinter.LEFT)         #将button1添加到root主窗口
 button2=tkinter.Button(root,text='Button2')
 button2.pack(side=tkinter.RIGHT)
 root.mainloop()             #进入消息循环(必需组件)

3、tkinter中的15种核心组件:

    Button          按钮;
    Canvas          绘图形组件,可以在其中绘制图形;
    Checkbutton      复选框;
    Entry           文本框(单行);
    Text             文本框(多行);
    Frame           框架,将几个组件组成一组
    Label           标签,可以显示文字或图片;
    Listbox         列表框;
    Menu            菜单;
    Menubutton       它的功能完全可以使用Menu替代;
    Message          与Label组件类似,但是可以根据自身大小将文本换行;
    Radiobutton      单选框;
    Scale           滑块;允许通过滑块来设置一数字值
    Scrollbar        滚动条;配合使用canvas, entry, listbox, and text窗口部件的标准滚动条;
    Toplevel         用来创建子窗口窗口组件。
(在Tkinter中窗口部件类没有分级;所有的窗口部件类在树中都是兄弟。)

4、组件的放置和排版(pack,grid,place)

pack组件设置位置属性参数:
    after:        将组件置于其他组件之后;
    before:       将组件置于其他组件之前;
    anchor:        组件的对齐方式,顶对齐'n',底对齐's',左'w',右'e'
    side:        组件在主窗口的位置,可以为'top','bottom','left','right'(使用时tkinter.TOP,tkinter.E);
    fill            填充方式 (Y,垂直,X,水平)
    expand          1可扩展,0不可扩展
grid组件使用行列的方法放置组件的位置,参数有:
    column:         组件所在的列起始位置;
    columnspam:     组件的列宽;
    row:         组件所在的行起始位置;
    rowspam:      组件的行宽;
place组件可以直接使用坐标来放置组件,参数有:
    anchor:       组件对齐方式;
    x:            组件左上角的x坐标;
    y:             组件右上角的y坐标;
    relx:          组件相对于窗口的x坐标,应为0-1之间的小数;
    rely:           组件相对于窗口的y坐标,应为0-1之间的小数;
    width:          组件的宽度;
    heitht:        组件的高度;
    relwidth:       组件相对于窗口的宽度,0-1;
    relheight:     组件相对于窗口的高度,0-1;

5、使用tkinter.Button时控制按钮的参数:

    anchor:            指定按钮上文本的位置;
    background(bg)       指定按钮的背景色;
    bitmap:            指定按钮上显示的位图;
    borderwidth(bd)    指定按钮边框的宽度;
    command:          指定按钮消息的回调函数;
    cursor:            指定鼠标移动到按钮上的指针样式;
    font:               指定按钮上文本的字体;
    foreground(fg)     指定按钮的前景色;
    height:            指定按钮的高度;
    image:             指定按钮上显示的图片;
    state:              指定按钮的状态(disabled);
    text:               指定按钮上显示的文本;
    width:             指定按钮的宽度
    padx               设置文本与按钮边框x的距离,还有pady;
    activeforeground    按下时前景色
    textvariable        可变文本,与StringVar等配合着用

6、文本框tkinter.Entry,tkinter.Text控制参数:

    background(bg)      文本框背景色;
    foreground(fg)        前景色;
    selectbackground    选定文本背景色;
    selectforeground    选定文本前景色;
    borderwidth(bd)      文本框边框宽度;
    font                 字体;
    show                文本框显示的字符,若为*,表示文本框为密码框;
    state               状态;
    width              文本框宽度
    textvariable        可变文本,与StringVar等配合着用

7、标签tkinter.Label组件控制参数:

    Anchor            标签中文本的位置;
    background(bg)    背景色;
    foreground(fg)      前景色;
    borderwidth(bd)     边框宽度;
    width             标签宽度;
    height            标签高度;
    bitmap             标签中的位图;
    font               字体;
    image             标签中的图片;
    justify            多行文本的对齐方式;
    text             标签中的文本,可以使用'\n'表示换行
    textvariable       显示文本自动更新,与StringVar等配合着用

8、单选框和复选框Radiobutton,Checkbutton控制参数:

    anchor           文本位置;
    background(bg)   背景色;
    foreground(fg)    前景色;
    borderwidth       边框宽度;
    width            组件的宽度;
    height           组件高度;
    bitmap           组件中的位图;
    image            组件中的图片;
    font             字体;
    justify          组件中多行文本的对齐方式;
    text             指定组件的文本;
    value            指定组件被选中中关联变量的值;
    variable          指定组件所关联的变量;
    indicatoron        特殊控制参数,当为0时,组件会被绘制成按钮形式;
    textvariable       可变文本显示,与StringVar等配合着用

9、组图组件Canvas控制参数

    background(bg)      背景色;
    foreground(fg)       前景色;
    borderwidth       组件边框宽度;
    width             组件宽度;
    height             高度;
    bitmap             位图;
    image             图片;
绘图的方法主要以下几种:
    create_arc          圆弧;
    create_bitmap      绘制位图,支持XBM;
    create_image       绘制图片,支持GIF(x,y,image,anchor);
    create_line         绘制支线;
    create_oval;        绘制椭圆;
    create_polygon     绘制多边形(坐标依次罗列,不用加括号,还有参数,fill,outline);
    create_rectangle   绘制矩形((a,b,c,d),值为左上角和右下角的坐标);
    create_text         绘制文字(字体参数font,);
    create_window      绘制窗口;
    delete              删除绘制的图形;
    itemconfig          修改图形属性,第一个参数为图形的ID,后边为想修改的参数;
    move               移动图像(1,4,0),1为图像对象,4为横移4像素,0为纵移像素,然后用root.update()刷新即可看到图像的移动,为了使多次移动变得可视,最好加上time.sleep()函数;
    只要用create_方法画了一个图形,就会自动返回一个ID,创建一个图形时将它赋值给一个变量,需要ID时就可以使用这个变量名。
    coords(ID)          返回对象的位置的两个坐标(4个数字元组);

对于按钮组件、菜单组件等可以在创建组件时通过command参数指定其事件处理函数。方法为bind;或者用bind_class方法进行类绑定,bind_all方法将所有组件事件绑定到事件响应函数上。

10、菜单Menu

参数: 
    tearoff          分窗,0为在原窗,1为点击分为两个窗口
    bg,fg           背景,前景
    borderwidth      边框宽度
    font              字体
    activebackgound   点击时背景,同样有activeforeground,activeborderwidth,disabledforeground
    cursor
    postcommand
    selectcolor      选中时背景
    takefocus
    title       
    type
    relief
   
方法:
    menu.add_cascade      添加子选项
    menu.add_command      添加命令(label参数为显示内容)
    menu.add_separator    添加分隔线
    menu.add_checkbutton  添加确认按钮
    delete                删除

11、事件关联

bind(sequence,func,add)——
bind_class(className,sequence,func,add)
bind_all(sequence,func,add)
事件参数:  
sequence              所绑定的事件;
func                   所绑定的事件处理函数;
add                    可选参数,为空字符或‘+’;
className             所绑定的类;

鼠标键盘事件
    <Button-1>            鼠标左键按下,2表示中键,3表示右键;
    <ButtonPress-1>        同上;
    <ButtonRelease-1>    鼠标左键释放;
    <B1-Motion>           按住鼠标左键移动;
    <Double-Button-1>     双击左键;
    <Enter>               鼠标指针进入某一组件区域;
    <Leave>               鼠标指针离开某一组件区域;
    <MouseWheel>         滚动滚轮;
    <KeyPress-A>         按下A键,A可用其他键替代;
    <Alt-KeyPress-A>      同时按下alt和A;alt可用ctrl和shift替代;
    <Double-KeyPress-A>    快速按两下A;
    <Lock-KeyPress-A>     大写状态下按A;
   
窗口事件
    Activate             当组件由不可用转为可用时触发;
    Configure            当组件大小改变时触发;
    Deactivate          当组件由可用转变为不可用时触发;
    Destroy              当组件被销毁时触发;
    Expose              当组件从被遮挡状态中暴露出来时触发;
    Unmap              当组件由显示状态变为隐藏状态时触发;
    Map                  当组件由隐藏状态变为显示状态时触发;
    FocusIn              当组件获得焦点时触发;
    FocusOut            当组件失去焦点时触发;
    Property             当窗体的属性被删除或改变时触发;
    Visibility           当组件变为可视状态时触发;

响应事件
event对象(def function(event)):
    char                按键字符,仅对键盘事件有效;
    keycode            按键名,仅对键盘事件有效;
    keysym             按键编码,仅对键盘事件有效;
    num                鼠标按键,仅对鼠标事件有效;
    type                 所触发的事件类型;
    widget               引起事件的组件;
    width,heigh        组件改变后的大小,仅Configure有效;
    x,y                鼠标当前位置,相对于窗口;
    x_root,y_root       鼠标当前位置,相对于整个屏幕

12、弹窗

messagebox._show函数的控制参数:
    default         指定消息框按钮;
    icon            指定消息框图标;
    message        指定消息框所显示的消息;
    parent          指定消息框的父组件;
    title           标题;
    type            类型;

simpledialog模块参数:
    title           指定对话框的标题;
    prompt         显示的文字;
    initialvalue    指定输入框的初始值;

  filedialog    模块参数:
    filetype       指定文件类型;
    initialdir     指定默认目录;
    initialfile    指定默认文件;
    title         指定对话框标题

colorchooser模块参数:
    initialcolor    指定初始化颜色;
    title           指定对话框标题;

13、字体(font)
一般格式:
(’Times -10 bold’)
(‘Times’,10,’bold’,’italic’)    依次表示字体、字号、加粗、倾斜
补充:
config            重新配置
label.config(font=’Arial -%d bold’ % scale.get())
依次为字体,大小(大小可为字号大小),加粗
tkinter.StringVar    能自动刷新的字符串变量,可用set和get方法进行传值和取值,类似的还有IntVar,DoubleVar…

Python PIL ImageFilter 模块说明

用法如下:

from PIL importImageFilter

im02 =Image.open(“D:\\Code\\Python\\test\\img\\test02.jpg”)

im = im02.filter(ImageFilter.BLUR)

 

1、  BLUR

ImageFilter.BLUR为模糊滤波,处理之后的图像会整体变得模糊。

2、  CONTOUR

ImageFilter.CONTOUR为轮廓滤波,将图像中的轮廓信息全部提取出来。

3、  DETAIL

ImageFilter.DETAIL为细节增强滤波,会使得图像中细节更加明显。

4、 EDGE_ENHANCE

ImageFilter.EDGE_ENHANCE为边缘增强滤波,突出、加强和改善图像中不同灰度区域之间的边界和轮廓的图像增强方法。经处理使得边界和边缘在图像上表现为图像灰度的突变,用以提高人眼识别能力。

5、 EDGE_ENHANCE_MORE

ImageFilter.EDGE_ENHANCE_MORE为深度边缘增强滤波,会使得图像中边缘部分更加明显。

6、  EMBOSS

ImageFilter.EMBOSS为浮雕滤波,会使图像呈现出浮雕效果。

7、 FIND_EDGES

ImageFilter.FIND_EDGES为寻找边缘信息的滤波,会找出图像中的边缘信息。

8、  SMOOTH

ImageFilter.SMOOTH为平滑滤波,突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量。

9、  SMOOTH_MORE

ImageFilter.SMOOTH_MORE为深度平滑滤波,会使得图像变得更加平滑。

10、SHARPEN

ImageFilter.SHARPEN为锐化滤波,补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰。