1. 如何用python 读OPC(OLE for Process Control)历史数据
服务器那边会有一个DLL文件,在客户端引用以后,就可以调用里面的方法和函数
2. 物联网如何学习
想要成为一名物联网工程师,可以学习以下几个方面:
1、物联网产业与技术导论:全面了解物联网RFID、M2M、传感网、两化融合等技术与应用。
2、C语言程序设计:物联网涉及底层编程,C语言为必修课,同时需要了解OSGi,OPC,Silverlight等技术标准。
3、Java程序设计:物联网应用层,服务器端集成技术,开放Java技术也是必修课,同时需要了解Eclipse,SWT,Flash,HTML5等技术使用。
4、TCP/IP网络与协议:TCP/IP以及OSI网络分层协议标准是所有有线和无线网络协议的基础,Socket编程技术也是基础技能。
5、嵌入式系统技术:嵌入式系统是物联网感知层和通讯层重要技术。
6、无线传感网络:学习各种无线RF通讯技术与标准,Zigbee,蓝牙,WiFi,GPRS,CDMA,3G,4G,5G等。
(2)opcpython扩展阅读
物联网的基本特征
1、整体感知
可以利用射频识别、二维码、智能传感器等感知设备感知获取物体的各类信息。
2、可靠传输
通过对互联网、无线网络的融合,将物体的信息实时、准确地传送,以便信息交流、分享。
3、智能处理
使用各种智能技术,对感知和传送到的数据、信息进行分析处理,实现监测与控制的智能化。
3. 当下哪种语言更重要
面向底层,或高效率用C:如单片机,操作系统,数据库实现
面向上层应用面向对象编程C++高效率:VC/QT/GTK编程,现在WPSlinux版是QT实现的
面向对象编程JAVA, Android,网页脚本,也能编写PC机应用比如freemind, 也有嵌入式方面的应用.
再就是网络动态语言,jsp/php/asp , jsp一般用于大型网站,php是开源较多,主要一般网站伏没规模不大的在用,asp 好像不温不火,
比较流行的:go python 还要懂shell脚本编程,
面向硬件的有:VHDL/verilog
matlab:算法仿真
无论选哪种语言,商业开发基本上都会涉及到数据库,db2、oraclemysql好像比较出名
小型数据库sqlite,Android 就是用的这个
总之,各有各的用处,看你对哪方面感兴趣,要学的有很多.
我是学嵌入式的,看一下我收集的嵌入式方面需要掌握的知识与技能:
=================================================================
Altium Designer 原理图和PCB制作
STM32处理器
需求分析、设计方案
嵌入式软硬件系统的设计、测缺毕纳试;
技术文档;
生产工艺技术支持。
-------------------------------------------------------------------
Linux平台下进行软件开发
音视频编解码SDK的进行封装
音视频流存储、传输模块,设计、实现、优化及测试
编写相关开发文档、技术支持文档、使用说明
=====
C/C++ 良好的编程习惯与文档规范;
Linux 下进程间通信及内存管理机制
熟悉H.264,G.7xx,AMR,AAC等音视频编码
熟悉MP4,avi等文件格式
熟悉rtsp/rtp、rtmp、http
海思或者amberalla平台
通和协调能力
----------------------------------------------------------------------------
熟悉1种以上数据库
--------------------------------------------------------------
机器人开发经历或参加机器人相关研究
熟悉Android framework,以及Linux驱动开发,调试,有QT程经验
熟练阅读电路原理图,以及PCB layout;
有效地对新人或普通开发工程师进行辅导
---------------------------------------------------------------------------
悉嵌入式环境下的 C/C++ 语言程序设计和汇编语言程序设计
精通个域网通信协议,如无线网络(Wi-Fi、BlueTooth、Zigbee等)等协议,具有智能家数轿居产品相关经验
RM环境下的系统开发环境与工具,包括平台移植、驱动开发及调试,等等;
数字电路模拟电路基础,熟悉uCOS,Linux,RThread,FreeRTOS等嵌入式操作系统内核程序设计
深入掌握一种或几种嵌入式处理器系统(熟悉Arm、X86、PPC、MIPS)
---------------------------------------------------------------------------
WIFI模块
----------------------------------------
懂日语、32岁以下
-------------------------------------------------------------------------------------
bootloader、内核板级移植、集成。
海思或者amberalla平台开发经验
外设接口和通信协议,包括USB,CAN,LIN,TCP/IP等多种汽车和工业总线技术
无线通讯模块、蓝牙、GPRS、有线及无线通讯
物联网电子消费品产品开发经验
电气电子产品开发和项目管理经验
--------------------------------------------------------------------------------------
精通如下串行总线协议:USB/I2C/SPI/I2S/UART
悉Boot Loader,
具有Linux BSP经验者
具备良好沟通、协作、学习能力,能够主动在项目中承担起责任
写和移植内核设备驱动
裁剪和优化的Linux内核
----------------------------------------------------------------------------------
团队管理经验
硬件基本原理,能看懂原理图和PCB
精通linux内核架构,熟悉多线程编程
精通多种常用传输总线协议,如IIC、SPI、CAN、IIS;
对无线网络数据传输有较深了解;使用过无线传输模块,GPRS、3G等
WIFI驱动、WIFI应用、蓝牙驱动、蓝牙应用有较深的了解
对USB驱动有较深了解,做过USB设备驱动、对SD卡和TF卡
车载电子设备
熟悉视频、音频处理,熟悉视频、音频编解码处理;
熟悉安卓架构,能编写安卓中间件
ARM或DSP嵌入式软件开发经验
-----------------------------------------------------------------------------------------------
入式Linux系统体系结构设计,系统内核维护;
根据需求制定系统整体软件方案,划分软件模块;
优化uboot、Linux内核相关模块;
深入了解ARM(Cortex-A8以上)体系结构
常用驱动程序及相关协议,如:Framebuffer、以太网、USB、CAN总线、I2C、SPI等。可以对驱动程序进行深度的优化;
对视频/图像有较深刻认识,了解视频/图像编解码相关知识;
使用OPenGL完成图像渲染;
负责研究和开发3D引擎到Opengl的标准化接口;
深入理解QT底层实现机制。熟悉QT在不同平台之间的移植;
Ti/Freescale ARM开发经验
认真对待每一项工作,同事之间团结互助;
良好的英文交流能力
--------------------------------------------------------------------------------------------
熟悉wifi,nrf2401,camera,audio 等外围模组及相关协议
熟悉ucos—2
智能家居方面的实际开发经验
----------------------------------------------------------------------------------
单片机、ARM、Cotrex-M3/M4等处理器
掌握网络、UART、LCD、SPI、I2C、RS485
搭建嵌入式Linux软硬件系统
熟悉Linux内核机制
熟练完成嵌入式下linux的驱动开发与应用开发。
熟悉TCP/IP协议栈,Socket通信编程
熟悉HTTP、SNMP、DHCP等应用层协议。
CAN总线、WIFI、Zigbee等相关产品开发经验
良好的语言表达沟通能力和团队合作精神
------------------------------------------------------------------------------------
broad expertise
-----------------------------------------------------------------------------------------
具有linux,freeRTOS等主流嵌入式系统开发经验
熟悉TCP/IP、WIFI、蓝牙BLE、I2C等协议
有音频、Andorid开发、Java虚拟机、云端数据同步、智能家居产品等开发经验
嵌入软件, 驱动,协议栈,协议开发经验
精通TCP/IP协议
用网络协议,了解防火墙, 路由交换技术
无线协议802.11,802.1X
熟悉Wi-Fi、ZigBee、蓝牙,模拟信号、UART、RS232、RS485、各种现场总线、HART-IP、TCP/IP、OPC、OPC UA、BACNet等协议
立志于一起打造互联网+工业。
---------------------------------------------------------------------------------------------
熟悉8583、EMV、PBOC等相关行业知识
3年以上 嵌入式 Linux 驱动开发经验
读懂硬件图纸
熟练掌握 i2c、i2s、spi、gpio、uart、usb、lcd/framebuffer 等常用 Linux 驱动
Linux 中断程序开发;
电机控制驱动、Linux系统管理、系统版本升级 等开发经验
---------------------------------------------------------------------------------------------
雷达、超声项目相关的研发
扎实全面的硬件电路设计、调试能力,熟悉模拟、数字及混合电路;
拥有DSP(TI TMS系列为佳),ARM, FPGA/CPLD 设计经验;
解决并优化整体系统的信噪比、电磁屏蔽、能耗管理和热耗散管理
熟悉PCB 布线,制版和调试
有担任规模量产项目技术研发经历
掌握交叉编译环境、熟练典型Linux系统调用和应用程序开发
熟练掌握至少一种版本管理工具(如:SVN、GIT等);
对Linux系统内核及驱动程序有深入理解
对Linux内核进行深度定制和修改
------------------------------------------------------------------------------------------------
熟悉uC/OS下Camera,LCD、WIFI、RIL、IIC、SPI、UART、2G、各类型Sensor等各种外设驱动驱动模型
做过传统单片机 pos 机 或类似stm32 pos机项目经验
熟悉PBOC协议
能够使用示波器和逻辑分析仪等
--------------------------------------------------------------------
C/C++ 网络及多线程编程
熟悉OpenWrt开发,移植
悉Qualcomm SDK者优先,有一定的算法基础,
----------------------------------------------------------------
用有电子工具软件PROTEL\PADS等
网关产品,协议转换类产品编程经验
精通TCP/IP,ZIGBEE,MQTT协议,了解至少一种工业总线;
能独立承担产品的设计规划,周边接口硬件电路设计,功能软件设计;
---------------------------------------------------------------------
熟悉C/C++/JAVA/J2ME语言编程
入式Linux操作系统,Linux驱动开发
精通Android开发平台及Framework框架原理
熟悉基本无线协议;
责任心和进取心
团队协作
善于沟通和表达
独立设计优化和移植HAL层外设模块,如Camera、WiFi、蓝牙、触摸屏等模块;
将Android系统移植到特定硬件平台上
给上层app及UI开发提供支持
--------------------------------------------------------------------------
移植和底层驱动
熟悉Linux内核架构;
Makefile、shell等脚本语言
熟悉RTP,RTCP,RTSP等流媒体协议
熟练使用Ethereal、Wireshark和Tcpmp等网络协议分析工具;
DVR、MDVR、DVS等监控产品开发经验
-------------------------------------------------------------------------
产品的规划设计、安卓等平台的底层驱动程序编写调试
主板调试及外设调试,确保项目中驱动部分的质量和进度
独立完成各业务模块的驱动开发工作以及技术难题攻关、技术评估;
模块的需求分析、详细设计、编码实现、和单元自测,参与产品需求分析并制定技术实施方案,根据产品功能需求设计并完成软件实现,了解项目需求和业务流程。
2年以上单片机系统软件开发经验,2年以上的Android系统软件驱动开发经验(有成熟产品移植开发经验),有WINCE平台开发经验更佳;
uboot、kenel Driver开发以及HAL层等开发、调试和集成工作
熟悉ARM系列处理器架构,包括简单的ARM处理器(Cortex-M3/M0)和复杂的多核ARM处理器的应用设计经验;
无线网络数据传输有较深了解;使用过无线传输模块,GPRS、3G等;
对USB驱动有较深了解,做过USB设备驱动、对SD卡和TF卡等实际应用上有独到的心得体会或做过车载电子设备
够独立解决各类底层疑难问题,能够同硬件和软件应用工程师一起合作解决复杂问题;
责任心,主动学习,团队沟通协作,文档输出, 英语读写
---------------------------------------------------------------------------------
精通Wifi协议及应用开发,熟悉博通与MTK系列wifi芯片;
熟悉TCPIP协议,熟悉HTTP、FTP等网络协议应用和开发
熟悉Wifi、射频产品的生产和测试
必须有broadcom、Atheros或MTK的一种wifi方案经验
自我驱动的学习和工作习惯
对未知技术和领域能快速掌握并实践
沟通、协调, 项目管理、团队管理
---------------------------------------------------------------------------------------
Socket编程,多线程编程,进程间通信
熟悉TCP/IP协议;熟悉HTTP,UDP/RTP/RTCP/RTS等流媒体传输与控制协议;
熟悉音视频压缩技术
------------------------------------------------------------
悉实时操作系统如ThreadX,FreeRTOS
熟悉串口,TCPIP协议,WIFI,GPIO,JTAG等底层编程
家电无线模块软件开发
不同硬件平台选型开发
撰写并维护相关技术文档
-----------------------------------------------------------------------
通32 bit ARM单片机系统开发,熟悉Atmel芯片
精通uCOSII系统,有相关开发经验
OS(uCOSII与Linux)移植、驱动编写与应用软件开发
------------------------------------------------------------------------
主流单片机、ARM、FPGA硬件平台
熟悉VHDL/Verilog语言进行FPGA开发;
有效实现板级系统间数据通讯,
了解卫星通讯协议
熟悉使用LabView进行数据采集和系统测试
独立进行PCB开发并联系相关厂家进行生产
熟悉中国电子信息产业链,不仅懂得怎样设计, 还要知道怎样利用现有市场产品, 经济快速有效地实现自己的设计
了解电子产品国际市场, 能够从市场角度去开发产品;
英语能力可以应付国际化工作环境, 能够熟练使用法语德语更好。
在本专业领域内有丰富人脉,能够在全世界范围内为具体问题找到合适的人;
4. 实现python文本写入word
准备
我测试使用的Python版本为2.7.10,如果你的版本是Python3.5的话,这里就不太适合了。
使用Speech API
原理
我们的想法是借助微软的语音接口,所以我们肯定是要进行调用 相关的接口。所以我们需要安装pywin32来帮助我们完成这一个底层的交互。
示例代码
import win32com.clientspeaker = win32com.client.Dispatch("SAPI.SpVoice")speaker.Speak("Hello, it works!")
小总结
是的,调用接口来实现语音功能就是这么简单,但是我们不得不来聊一聊这种方式的缺点。
对中文支持的不够好,仅仅是这一点,估计在中国没几个用它的了。
还有就是语速不能很好的控制
pyttsx方式
原理
pyttsx 是Python的一个关于文字转语音方面的很不错的库。我们还可以借助pyttsx来实现在线朗读rfc文件或者本地文件等等,最为关键的是,它对中文支持的还是不错的。
示例代码
# coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')# __author__ = '郭 璞'# __date__ = '2016/8/6'# __Desc__ = 文字转语音输出import pyttsxengine = pyttsx.init()engine.say('hello world')engine.say('你好,郭璞')engine.runAndWait()# 朗读一次engine.endLoop()
小总结
使用pyttsx,我们可以借助其强大的API来实现我们基本的业务需求。很酷吧。
pyttsx深入研究
做完上面的小实验,你肯定会觉得怎么这么不过瘾呢?
别担心,下面我们就一起走进pyttsx的世界,深入的研究一下其工作原理吧。
语音引擎工厂
类似于设计模式中的“工厂模式”,pyttsx通过初始化来获取语音引擎。当我们第一次调用init操作的时候,会返回一个pyttsx的engine对象,再次调用的时候,如果存在engine对象实例,就会使用现有的,否则再重新创建一个。
pyttsx.init([driverName : string, debug : bool]) → pyttsx.Engine
从方法声明上来看,第一个参数指定的是语音驱动的名称,这个在底层适合操作系统密切相关的。如下:
1.drivename:由pyttsx.driver模块根据操作系统类型来调用,默认使用当前操作系统可以使用的最好的驱动
sapi5 - SAPI5 on Windows
nsss - NSSpeechSynthesizer on Mac OS X
espeak - eSpeak on every other platform
2.debug: 这第二个参数是指定要不要以调试状态输出,建议开发阶段设置为True
引擎接口
要想很好的运用一个库,不了解其API是不行的。下面来看看pyttsx。engine.Engine的引擎API。
方法签名 参数列表 返回值 简单释义
connect(topic : string, cb : callable) topic:要描述的事件名称;cb:回调函数 → dict 在给定的topic上添加回调通知
disconnect(token : dict) token:回调失联的返回标记 Void 结束连接
endLoop() None → None 简单来说就是结束事件循环
getProperty(name : string) name有这些枚举值“rate, vioce,vioces,volumn → object 获取当前引擎实例的属性值
setProperty(name : string) name有这些枚举值“rate, vioce,vioces,volumn → object 设置当前引擎实例的属性值
say(text : unicode, name : string) text:要进行朗读的文本数据; name: 关联发音人,一般用不到 → None 预设要朗读的文本数据,这也是“万事俱备,只欠东风”中的“万事俱备”
runAndWait() None → None 这个方法就是“东风”了。当事件队列中事件全部清空的时候返回
startLoop([useDriverLoop : bool]) useDriverLoop:是否启用驱动循环 → None 开启事件队列
元数据音调
在pyttsx.voice.Voice中,处理合成器的发音。
age
发音人的年龄,默认为None
gender
以字符串为类型的发音人性别: male, female, or neutral.默认为None
id
关于Voice的字符串确认信息. 通过 pyttsx.engine.Engine.setPropertyValue()来设置活动发音签名. 这个属性总是被定义。
languages
发音支持的语言列表,如果没有,则为一个空的列表。
name
发音人名称,默认为None.
更多测试
朗读文本
import pyttsxengine = pyttsx.init()engine.say('Sally sells seashells by the seashore.')engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
事件监听
import pyttsxdef onStart(name): print 'starting', namedef onWord(name, location, length): print 'word', name, location, lengthdef onEnd(name, completed): print 'finishing', name, completedengine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
打断发音
import pyttsxdef onWord(name, location, length): print 'word', name, location, length if location > 10: engine.stop()engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
更换发音人声音
engine = pyttsx.init()voices = engine.getProperty('voices')for voice in voices: engine.setProperty('voice', voice.id) engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
语速控制
engine = pyttsx.init()rate = engine.getProperty('rate')engine.setProperty('rate', rate+50)engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
音量控制
engine = pyttsx.init()volume = engine.getProperty('volume')engine.setProperty('volume', volume-0.25)engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
执行一个事件驱动循环
engine = pyttsx.init()def onStart(name): print 'starting', namedef onWord(name, location, length): print 'word', name, location, lengthdef onEnd(name, completed): print 'finishing', name, completed if name == 'fox': engine.say('What a lazy dog!', 'dog') elif name == 'dog': engine.endLoop()engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.', 'fox')engine.startLoop()
使用一个外部的驱动循环
engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.', 'fox')engin(www.alOnely.Com.Cn)e.startLoop(False)# engine.iterate() must be called inside externalLoop()externalLoop()engine.endLoop()
总结
以上就是Python如何实现文本转语音的全部内容,看完了上面的讲述,是不是感觉Python实现文本转语音还是蛮简单的?那么,大家快来尝试尝试吧。希望本文对大家学习Python有所帮助。
5. opc转socket
opc转socket可以:
1、采用python开发环境(32位),支持WindowsALL操作系统的OPCDAServer的数据读取,老兆昌如(Kepserver、Matrikon、GEIGS、亚控、力控等)侍扒。
2、提供SocketServer(TCP)服务器功能,支持不同平台的SocketClient的连接和通讯交互。
3、多线程机制,支猜散持多socket客户端同时通讯交互,时效性高。
6. 常用的十大python图像处理工具
原文标题:10 Python image manipulation tools.
作者 | Parul Pandey
翻译 | 安其罗乔尔、JimmyHua
今天,在我们的世界里充满了数据,图像成为构成这些数据的重要组成部分。但无论是用于何种用途,这些图像都需要进行处理。图像处理就是分析和处理数字图像的过程,主要旨在提高其质量或从中提取一些信息,然后可以将其用于某种用途。
图像处理中的常见任务包括显示图像,基本操作如裁剪、翻转、旋转等,图像分割,分类和特征提取,图像恢复和图像识别。Python成为这种图像处理任务是一个恰当选择,这是因为它作为一种科学编程语言正在日益普及,并且在其生态系统中免费提供许多最先进的图像处理工具供大家使用。
让我们看一下可以用于图像处理任务中的常用 Python 库有哪些吧。
1.scikit-image
scikit-image是一个开源的Python包,适用于numpy数组。它实现了用于研究,教育和工业应用的算法和实用工具。即使是那些刚接触Python生态系统的人,它也是一个相当简单直接的库。此代码是由活跃的志愿者社区编写的,具有高质量和同行评审的性质。
资源
文档里记录了丰富的例子和实际用例,阅读下面的文档:
http://scikit-image.org/docs/stable/user_guide.html
用法
该包作为skimage导入,大多数功能都在子模块中找的到。下面列举一些skimage的例子:
图像过滤
使用match_template函数进行模板匹配
你可以通过此处查看图库找到更多示例。
2. Numpy
Numpy是Python编程的核心库之一,并为数组提供支持。图像本质上是包含数据点像素的标准Numpy数组。因此,我们可以通过使用基本的NumPy操作,例如切片、掩膜和花式索引,来修改图像的像素值。可以使用skimage加载图像并使用matplotlib显示图像。
资源
Numpy的官方文档页面提供了完整的资源和文档列表:
http://www.numpy.org/
用法
使用Numpy来掩膜图像.
3.Scipy
scipy是Python的另一个类似Numpy的核心科学模块,可用于基本的图像操作和处理任务。特别是子模块scipy.ndimage,提供了在n维NumPy数组上操作的函数。该包目前包括线性和非线性滤波,二值形态学,B样条插值和对象测量等功能函数。
资源
有关scipy.ndimage包提供的完整功能列表,请参阅下面的链接:
https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution
用法
使用SciPy通过高斯滤波器进行模糊:
4. PIL/ Pillow
PIL( Python图像库 )是Python编程语言的一个免费库,它支持打开、操作和保存许多不同的文件格式的图像。然而, 随着2009年的最后一次发布,它的开发停滞不前。但幸运的是还有有Pillow,一个PIL积极开发的且更容易安装的分支,它能运行在所有主要的操作系统,并支持Python3。这个库包含了基本的图像处理功能,包括点运算、使用一组内置卷积核的滤波和色彩空间的转换。
资源
文档中有安装说明,以及涵盖库的每个模块的示例:
https://pillow.readthedocs.io/en/3.1.x/index.html
用法
在 Pillow 中使用 ImageFilter 增强图像:
5. OpenCV-Python
OpenCV( 开源计算机视觉库 )是计算机视觉应用中应用最广泛的库之一 。OpenCV-Python 是OpenCV的python版API。OpenCV-Python的优点不只有高效,这源于它的内部组成是用C/C++编写的,而且它还容易编写和部署(因为前端是用Python包装的)。这使得它成为执行计算密集型计算机视觉程序的一个很好的选择。
资源
OpenCV-Python-Guide指南可以让你使用OpenCV-Python更容易:
https://github.com/abidrahmank/OpenCV2-Python-Tutorials
用法
下面是一个例子,展示了OpenCV-Python使用金字塔方法创建一个名为“Orapple”的新水果图像融合的功能。
6. SimpleCV
SimpleCV 也是一个用于构建计算机视觉应用程序的开源框架。有了它,你就可以访问几个高性能的计算机视觉库,如OpenCV,而且不需要先学习了解位深度、文件格式、颜色空间等。
它的学习曲线大大小于OpenCV,正如它们的口号所说“计算机视觉变得简单”。一些支持SimpleCV的观点有:
即使是初学者也可以编写简单的机器视觉测试摄像机、视频文件、图像和视频流都是可互操作的资源
官方文档非常容易理解,而且有大量的例子和使用案例去学习:
https://simplecv.readthedocs.io/en/latest/
用法
7. Mahotas
Mahotas 是另一个计算机视觉和图像处理的Python库。它包括了传统的图像处理功能例如滤波和形态学操作以及更现代的计算机视觉功能用于特征计算,包括兴趣点检测和局部描述符。该接口是Python语言,适合于快速开发,但是算法是用C语言实现的,并根据速度进行了调优。Mahotas库速度快,代码简洁,甚至具有最小的依赖性。通过原文阅读它们的官方论文以获得更多的了解。
资源
文档包括安装指导,例子,以及一些教程,可以更好的帮助你开始使用mahotas。
https://mahotas.readthedocs.io/en/latest/install.html
用法
Mahotas库依赖于使用简单的代码来完成任务。关于‘Finding Wally’的问题,Mahotas做的很好并且代码量很少。下面是源码:
https://mahotas.readthedocs.io/en/latest/wally.html
8. SimpleITK
ITK 或者 Insight Segmentation and Registration Toolkit是一个开源的跨平台系统,为开发人员提供了一套广泛的图像分析软件工具 。其中, SimpleITK是建立在ITK之上的简化层,旨在促进其在快速原型设计、教育、解释语言中的应用。SimpleITK 是一个图像分析工具包,包含大量支持一般过滤操作、图像分割和匹配的组件。SimpleITK本身是用C++写的,但是对于包括Python以内的大部分编程语言都是可用的。
资源
大量的Jupyter Notebooks 表明了SimpleITK在教育和研究领域已经被使用。Notebook展示了用Python和R编程语言使用SimpleITK来进行交互式图像分析。
http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/
用法
下面的动画是用SimpleITK和Python创建的刚性CT/MR匹配过程的可视化 。点击此处可查看源码!
9. pgmagick
pgmagick是GraphicsMagick库的一个基于python的包装。 GraphicsMagick图像处理系统有时被称为图像处理的瑞士军刀。它提供了一个具有强大且高效的工具和库集合,支持以88种主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)读取、写入和操作图像。
资源
有一个专门用于PgMagick的Github库 ,其中包含安装和需求说明。还有关于这个的一个详细的用户指导:
https://github.com/hhatto/pgmagick
用法
使用pgmagick可以进行的图像处理活动很少,比如:
图像缩放
边缘提取
10. Pycairo
Pycairo是图像处理库cairo的一组Python捆绑。Cairo是一个用于绘制矢量图形的2D图形库。矢量图形很有趣,因为它们在调整大小或转换时不会失去清晰度 。Pycairo是cairo的一组绑定,可用于从Python调用cairo命令。
资源
Pycairo的GitHub库是一个很好的资源,有关于安装和使用的详细说明。还有一个入门指南,其中有一个关于Pycairo的简短教程。
库:https://github.com/pygobject/pycairo指南:https://pycairo.readthedocs.io/en/latest/tutorial.html用法
使用Pycairo绘制线条、基本形状和径向梯度:
总结
有一些有用且免费的Python图像处理库可以使用,有的是众所周知的,有的可能对你来说是新的,试着多去了解它们。
7. 触摸屏高端边缘计算网关
计讯物联触摸屏边缘计算网关TG462内置了丰富的通信协议库,非常适用于工业现场的数据采集和与远程传输、设备远程维护与控制、大型设备生命周期管理、各类型通信协议解析和转换等工业领域物联网应用场景。
丰富的行业应用接口,可同时接入多个设备、传感器、仪表等。
支持4个RS232接口(其中1路做DEBUG)、3个RS485接口(其中1路和RS232复用)、1个I2C接口、1个TTL电平串口、4路开关量输入接口、 8路模拟量输入接口(12位AD、支持4-20mA电流或0-5V电压信号)、4路继电器输出、5路电源输出(外设供电)等可兼容采集多种工业传感器采集需求。
多种网络通信模式,适用各种组网应用。
集全网通5G/4G/3G/2G/GPRS网络、广域网、局域网、WIFI(可选)等多洞信腊种通信方式,可选NB-IOT通信方式,支持有线和无线互为备份;
超强数据采集、协议转换能力,让数据交互更顺畅!
支持ModbusRTU、ModbusTCP、MQTT、OPC、HTTP、环保212规约、住建部能耗规约,支持定制第三方的上位机通信协议。可实现串口数据、模拟量和开关量信号、2路局域网数据的采集并转发至指定服务器。支持多中心通信,可同时与多个后台服务器进行通信。
TG462 触摸屏边缘计算网关的功能。
本地数据存储、定时采集上报、远程查询实时数据、支持视纳滑频传输、支持视频数据叠加、支持图片抓拍功能(定制)、支持外接LED屏、可自定义显示内容、、内置大容量数据存储空间、1G Flash内存、支持外接TF卡、支持远程管理、支持远程程序升级。
支持用户二次开发,使用更安全应用更灵活
采用Arm架构高端处理器;标准Linux系统,集成Python开发环境和C语言开发环境,提供标准API接口及开发指导,为用户的二次应用开发提供稳定快捷的平台,用户可轻松调用系统各种接口及资源,打造差异化核心竞争力。
设备远程管理,节省人力物力
计讯物联TG462边缘计算网关支持远程诊断、升级,故障自恢复;设备远程管理、维护,降低运维成本,提升效率。远程设置网关:可远程设置网关所有参数,操作方式、步骤与本地配置方式一样。远程添加设备:添加传感器、控制器等物联网终端。远程设置网口设备:远程设置网关连接的网坦嫌络设备。
应用领域
广泛适用于工业4.0、电力行业、智慧市政、智能交通、商业联网等场景。
8. 开源库分享--为物联网(IoT)设计和优化的开源大数据
一个开源的专为物联网、车联网、工业互联网、IT运维等设计和优化的大数据平台。除核心的快10倍以上的时序数据库功能外,还提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的工作量
定义了创新的数据存储结构,单核每秒就能处理至少2万次请求,插入数百万个数据点,读出一千万以上数据点,比现有通用数据库快了十倍以上。
由于超强性能,计算资源不到通用大数据方案的1/5;通过列式存储和先进的压缩算法,存储空间不到通用数据库的1/10。
将数据库、消息队列、缓存、流式计算等功能融合一起,应用无需再集成Kafka/Redis/HBase/Spark等软件,大幅降低应用开发和维护成本。
无论是十年前还是一秒钟前的数据,指定时间范围即可查询。数据可在时间轴上或多个设备上进行聚合。即席查询可通过Shell/Python/R/Matlab随时进行。
不用一行代码,即可与Telegraf, Grafana, Matlab, R集成。后续还将支持MQTT, OPC, Hadoop,Spark等, BI工具也将无缝连接。
你知道哪些好用的开源的物联网大数据处理方式,欢迎评论分享,共同探讨学习
9. 利用python将docx文件转为txt
背景:工作中需要将文件夹下的若干word文.docx转换为对应txt文本格式
因此需要将docx中文本读取出来,然后保存为txt格式即可
需要的python模厅伏块为 python-docx : https://python-docx.readthedocs.io/en/latest/index.html, 导入模块时候导入docx
(只能读取.docx文件,不能读取.doc文件)
注意,在PyPi里还有一个叫docx的库,已经停止更新,不建议使用)
http://www.cnblogs.com/geek-arking/p/9300617.html
上面的方法只能读取docx文件,如果读取doc会报错
结果报错:docx.opc.exceptions.PackageNotFoundError: Package not found。还是无法识别doc
“改变拓展名并没有改变其编码方式,因此无法读取文本内容,需将doc文件用word另存为docx后再用python-docx读取其内容”
对于要转换的doc文件,网上的资料都是使用win32,需要安装 pypiwin32
https://www.cnblogs.com/AlgorithmDot/p/3386918.html
通过上面的方法,有时可以尘陆直接将doc转换为txt文件,有时候会报错。
这里我们可以考虑将doc文件直接转换为docx然后再通过上面的方法读取为txt,如果手动将doc修改为txt或者docx,打开文件会显示乱码,但是可以用其提供的SaveAs方法将.doc文档利用手动的方式“另存为”.docx文档,就能够成功打开转化后的.docx文档,
doc.SaveAs(tmp +'.docx', 16)
其中16的含义如下:
利用win32com接口直接调用office API,好处是简单、兼容性好,只要office能处理的,python都可以处理,处理出来的结果和office word里面“另存为”一扮兄携致。
下面是office 2007支持的全部文件格式对应表:
wdFormatDocument = 0
wdFormatDocument97 = 0
wdFormatDocumentDefault = 16
wdFormatDOSText = 4
wdFormatDOSTextLineBreaks = 5
wdFormatEncodedText = 7
wdFormatFilteredHTML = 10
wdFormatFlatXML = 19
wdFormatFlatXMLMacroEnabled = 20
wdFormatFlatXMLTemplate = 21
= 22
wdFormatHTML = 8
wdFormatPDF = 17
wdFormatRTF = 6
wdFormatTemplate = 1
wdFormatTemplate97 = 1
wdFormatText = 2
wdFormatTextLineBreaks = 3
wdFormatUnicodeText = 7
wdFormatWebArchive = 9
wdFormatXML = 11
wdFormatXMLDocument = 12
= 13
wdFormatXMLTemplate = 14
= 15
wdFormatXPS = 18
照着字面意思应该能对应到相应的文件格式。
1、新建或打开文件。这个比较简单用docx的Document类,若指定路径则是打开文档;若没有指定路径则是新建文档
2、保存文件。有打开,就有保存。用Document类的save方法,其中参数是保存的文件路径,或者要保存的文件流。一般指定路径即可。
doc.save(path_or_stream)
3、对象集合。python-docx包含了word文档的相关对象集合。
4、插入段落。段落是word最基本的对象之一。
5、新增样式。这个帮助文档里面说得不仔细,而且还是英文的。我手头上的项目用到这个,就自己琢磨出怎么使用,如下。
6、应用字符样式。字符自然是在段落里面的,可以采用下面方法给段落追加文字和设置字符样式。
#插入一个空白段落
p = doc.add_paragraph('')
p.add_run('123', style="Heading 1 Char")
p.add_run('456')
p.add_run('789', style="Heading 2 Char")
#这样一个段落就应用了两个字符样式,中间“456”就没应用样式
printp.text#输出结果是u'123456789' 也还是连续的
7、设置字体。当然可以不用通过设置样式对某些字进行设置,也可以直接设置。
p = doc.add_paragraph('')
r = p.add_run('123')
r.font.bold =True#加粗
r.font.italic =True#倾斜 等等...
8、表格操作。表格也是经常用到的一种对象类型。
10. 如何形容python 的 openopc库
About OpenOPC
OpenOPC for Python is a free, open source OPC (OLE for Process Control) toolkit designed for use with the popular Python programming language. The unique features that set it apart from the many commercially available OPC toolkits include...
Easy to use
Because the OpenOPC library implements a minimal number of Python functions which may be chained together in a variety of ways, the library is simple to learn and easy to remember. In its simplest form, you can read and write OPC items as easily as any variable in your Python program... print opc['Square Waves.Int4'] opc['Square Waves.Real8'] = 100.0 Cross platform support
OpenOPC works with both Windows and non-Windows platforms. It has been tested with Windows, Linux, and Mac OS X. Functional programming style
OpenOPC allows OPC calls to be chained together in an elegant, functional programming style. For example, you can read the values of all items matching a wildcard pattern using a single line of Python code! opc.read(opc.list('Square Waves.*')) Designed for dynamic languages
Most OPC toolkits today are designed for use with static system languages (such as C++ or C#), providing a close mapping to the underlying Win32 COM methods. OpenOPC discards this cumbersome model and instead attempts to take advantage of the dynamic language features provided by Python.
OpenOPC is also one of the very few OPC-DA toolkits available for any dynamic language, and future support is planned for Ruby. EXAMPLE: Minimal working program
import OpenOPC
opc = OpenOPC.client()
opc.connect('Matrikon.OPC.Simulation')
print opc['Square Waves.Real8']
opc.close()
This project utilizes the de facto OPC-DA (Win32 COM-based) instrial automation standard. If you are looking for an OPC XML-DA library for Python, then please visit the PyOPC project.
OpenOPC Gateway Service
The Gateway Service is an optional Windows service which handles all the Win32 COM/DCOM calls used by the OpenOPC library mole. This offers the following potential advantages:
Avoidance of DCOM security headaches and firewall issues when running the OPC client and OPC server on different nodes. The ability to write OPC client applications that can run on non-Windows platforms such as Linux, Unix, and Mac OS X. Installing the service
C:\OpenOPC\bin> OpenOPCService.exe -install
Installing service OpenOpcService
Service installed
Starting the service
C:\OpenOPC\bin> net start zzzOpenOpcService
Stopping the service
C:\OpenOPC\bin> net stop zzzOpenOpcService
NOTE: If you want to use the OpenOPC Gateway service from another machine as a client and are using OpenOPC 1.2 then you must set the environment variable in windows and restart the gateway service:
OPC_GATE_HOST=x.x.x.x