AoboSir 博客

与15年前的我比,我现在是大人;与15年后的我比,我现在还是个婴儿

Intel RealSense 000 Intel RealSense摄像头介绍:F200、SR300、R200



目前的Intel RealSense摄像头一共有三款:F200SR300R200

  • SR300 和 F200 都属于:近距离摄像头(Front Facing)。
  • R200 属于:远距离摄像头(Rear Facing)
  • 在Intel RealSense 官方示例程序中,总会在程序的前缀出现:FF_RF_或者DF_,它们分别表示:适用于近距离摄像头(Front Facing)、适用于远距离摄像头(Rear Facing) 和 两者都适用(Dual Facing)。

SR300

官网介绍:Introducing the Intel® RealSense™ Camera SR300

外部:

Alt text

内部:

Alt text


Alt text

SR300 只有:

  • 测量范围:0.2m ~ 1.2m (要求:室内,并且)
  • 深度摄像头(640x480 60fps)
  • 彩色摄像头(1080p 30fps 或者 720p 60fps 可调)
  • 红外线摄像头(640x480 200fps )
  • (left)、(right)摄像头

R200

参考网站:Developing for the Intel® RealSense™ Camera (R200)

外部:

Alt text

内部:

Alt text

R200 有:

  • 测量范围:

Intel RealSense 测量范围

Alt text

Learning Python 008 正则表达式-006 正则表达式中如果有换行,代码要怎么写


开发环境

  • Python第三方库:lxml、Twisted、pywin32、scrapy
  • Python 版本:python-3.5.0-amd64
  • PyCharm软件版本:pycharm-professional-2016.1.4
  • 电脑系统:Windows 10 64位

如果你还没有搭建好开发环境,请到这篇博客


当我在使用正则表达式去提取网页源代码中的有效数据的时候。发现:我要提取的有效数据所需要使用的正则表达式中有换行。那么这个时候,正则表达式要怎么写?

目标网站:http://blog.csdn.net/github_35160620/article/details/53512977

要提取的有效信息:访问的数量

Alt text

查看网页源代码:

Alt text

所以,如果我们想提取出访问数量,需要使用的正则表达式中会存在换行:

1
2
'''<dt class="item">(.^?)</dt>
            <dd class="item_name">访问'''

但是这样是不能匹配到结果。而正确的正则表达式是下面这样的:

1
'<dt class="item">(.*?)</dt>\r\n            <dd class="item_name">访问'

使用转义字符 \r\n 来表示换行。

代码:

1
2
3
4
5
6
7
8
9
10
def next(self, response):
    pattam_visits = '<dt class="item">(.*?)</dt>\r\n            <dd class="item_name">访问'
    # print('response.body type is ', type(response.body))
    # print('response.body.decode type is ', type(response.body.decode('utf-8', 'ignore')))

    body_data = response.body.decode('utf-8', 'ignore') # .replace(u'\xa9', u'')
    visits = re.compile(pattam_visits).findall(body_data)[0]
    print('当前访问量为:', visits)
    print('-------------------')
    pass

compile() 函数的使用方法在这里可以了解。


Learning Python 008 正则表达式-005 Compile模板的使用


  • 使用的电脑系统:Windows 10 64位
  • 使用的开发集成环境:PyCharm 2016.1.4
  • 使用的Python的版本:python 2.7.10 和 python 3.5.0

compile()函数的用法

1
2
3
4
5
import re
str = 'fdfgdrthxxi--gdfgexxlove--dsdfwesdxxyou--dfgdf'
pattam_str = 'xx(.*?)--'
result = re.compile(pattam_str).findall(str)
print(result)

运行:

1
2
>python learningpython29.py
['i', 'love', 'you']

解释:

  • 其中pattam_str 就是正则表达式字符串。
  • str 就是目标字符串
  • result 就是得到的结果

代码中的

1
2
result = re.compile(pattam_str).findall(str)
print(result)

等价于:

1
result = re.findall(pattam_str, str)

运行输出的结果是一样的。


Python3 解决编码问题: UnicodeEncodeError: 'Gbk' Codec Can't Encode Character '\xa9' in Position Xxx: Illegal Multibyte Sequence --- 当执行爬虫将爬取信息打印到终端时出现的编码错误


开发环境

  • Python第三方库:lxml、Twisted、pywin32、scrapy
  • Python 版本:python-3.5.0-amd64
  • PyCharm软件版本:pycharm-professional-2016.1.4
  • 电脑系统:Windows 10 64位

如果你还没有搭建好开发环境,请到这篇博客


当使用Scrapy写爬虫项目的时候,当我们爬取某些中文网站,然后在DOS终端中打印爬取的网页源代码的时候,会出现各式各样的编码错误,今天,我又遇到一种编码错误,下面我将这个错误和对应的解决办法记录下来。

爬取的目标网址:http://blog.csdn.net/github_35160620/article/details/53353672

出现错误的代码:

1
2
3
4
def next(self, response):
    body_data = response.body.decode('utf-8', 'ignore')
    print(body_data)
    pass

执行:来到对应的爬虫项目路径下,执行:

1
scrapy crawl 爬虫名字

在出现的调试信息中你可以看到一个编码错误:

1
2
print(body_data)
UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 6732: illegal multibyte sequence

通过查看,这个u'xa9' Unicode编码所表示的字符是:©

Alt text

可以解决这个错误的方法:

将上面的代码修改为:

1
2
3
4
def next(self, response):
    body_data = response.body.decode('utf-8', 'ignore').replace(u'\xa9', u'')
    print(body_data)
    pass

现在运行这个程序scrapy crawl 爬虫名字 --nolog,上面的编码错误就没有。成功的输出了爬取的网页的源代码。

Intel RealSense 002(Learning RealSense SDK 001) Windows安装 Intel RealSense SDK


  • 我使用的Intel RealSense 硬件:SR300 摄像头
  • 电脑系统:Windows 10 64位
  • 电脑必须要有USB3.0接口

参考网站:

下载 并安装

Step 0 . 先将SR300摄像头通过USB3.0接口插到电脑上。

注意:

  1. 必须要将SR300摄像头连接到USB3.0接口上。(这是一个非常重要的步骤)
  2. 不要通过USB延长线连接。

Alt text

等待大约5分钟,驱动就自动安装完成了。

Alt text

如果电脑没有帮你自动安装,你需要将SR300模块与电脑断开,然后重插,电脑会帮你自动安装了SR300 摄像头的驱动程序。如果还是不行,重新启动试试看。

Step 1 . 下载SR300 深度摄像头管理程序(intel_rs_dcm_sr300_3.3.27.5718.exe)

DCM 是全称:Depth Camera Manager

安装:按照提示,一步一步的进行操作即可。

如果你需要这个问题:

Alt text

说明:SR300 摄像头没有与电脑连接,请先将SR300 摄像头于电脑通过USB3.0接口连接。

Step 2 . 下载 英特尔® 实感™ 软件开发套件(必备)(Intel® RealSense™ SDK for Windows*)

下载这里,你需要先注册一个inteld的用户,才能下载它。

安装:intel_rs_sdk_offline_package_10.0.26.0396.exe

一步一步的安装,即可。

如果你在安装的时候遇到这个问题:

Alt text

The Installer failed to detect OpenCL™ 1.2 support on your system. Certain SDK samples/modules may not be functional. Please upgrade your graphics driver for full SDK functionalities.

点击Next 按钮忽略即可。

出现这个问题的原因:

你先下载 GPU Caps Viewer 软件来查看我当前的电脑安装的OpenCL的版本我的电脑有没有GPU

Alt text

Alt text Alt text

通过GPU Caps Viewer软件得到的结果,我知道了:

  • 我的电脑里面是有GPU的:(NVIDIA CUDA公司的)GeForce GT 705
  • 这个显卡(GPU)支持的OpenCL版本是1.1

现在你应该大概知道了:安装的 Intel RealSense SDK 提示的安装问题的原因了吧:

Alt text

它说:您当前电脑的显卡太喽了,Intel RealSense SDK需要的是OpenCL1.2,而你的电脑里面没有,你电脑里面的显卡所支持的OpenCL版本是OpenCL1.1。

解决办法

没有办法,唯一可以解决下面这个问题的办法就是:提升(换一个好的)图形驱动硬件。(即:支持OpenCL1.2以上的显卡)。我们直接直接忽略这个问题也可以。对后面基本没有什么影响。


总结: 对于你的电脑,你想检测是否有GPU(显卡)(不管是NVIDIA CUDA 公司的还是 Intel公司的 都可以)。然后查看GPU(显卡)支持的OpenCL版本,必须要大于等于OpenCL1.2,否则 Intel RealSense SDK 安装不能成功。


注意安装的时候要连着网,因为在安装的时候会从网上下载一下安装包。

Alt text

如果你想要拥有 China 的语音识别和合成包,可以将下面的选项勾选。

Alt text


搞定

测试

启动 Intel RealSense SDK Sample Browser

Alt text

里面有很多的示例可以运行:(每个程序都运行一下,试试看。)

Alt text


学习文档:英特尔® 实感™ SDK 文档

Arduino 004 Windows上给Arduino IDE添加模块库


在我的Windows电脑里面,Arduino IDE软件安装在C:\Program Files (x86)\Arduino路径里面。

我们以一个例子来说明,如果将模块库添加到Arduino IDE软件中。

添加 I2Cdev 及其相关模块库到Arduino IDE软件里面

Step 0 . 关闭 Arduino IDE 软件

Step 1 . 下载 i2cdev 及其相关的模块库

这个网址里面下载所有i2cdev相关的模块库。

Step 2 . 下载后,解压,将/Arduino/路径里面的所有文件夹复制,并拷贝到:C:\Program Files (x86)\Arduino\libraries路径里面。

Alt text

Step 3 . 启动Arduino IDE 软件。在 文件 -> 示例 里面就可以看到刚刚添加到Arduino IDE的模块库。(现在就可以正常使用了)

Alt text


注意:

如果是Ubuntu系统,Arduino IDE 一般被安装在:/opt/arduino/

Arduino 003 Ubuntu(Linux) 系统下,如何给板子烧写程序

  • 使用的虚拟机软件:VMware 11
  • 我的Ubuntu系统:Ubuntu 14.04.10 TLS
  • Arduino 软件的版本:Arduino 1.6.11
  • Arduino 板子的型号:Arduino UNO R3

Step 0 . 来到 VMware 虚拟机里的Ubuntu 系统的界面。

Step 1 . Arduino 板子通过USB线插到电脑上。

Step 2 . 在终端中执行下面的命令,来启动 Arduino 软件。

1
arduino

Step 3 . 随便打开一个程序。我们以 Blink 程序为例,打开它:

Alt text

Step 4 . 选择 板卡型号

Alt text

Step 5 . 选择当前 端口号

Alt text

你可以看到:Arduino 软件右下角有当前被选中的端口号和被选中的Arduino板卡的信息。

Alt text

Step 6 . 给端口添加权限。

如果,这时你给 Arduino 开发板下载程序,发现下载出错。原因就是没有给端口添加权限。

Alt text

输出的 error 提示:

avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

在终端中执行下面的命令,来给当前选中的端口添加权限。

1
sudo chmod a+rw /dev/ttyACM0

端口号都在/dev/ 目录里面。执行下面的命令可以查看: cd /dev/ ls 输出 如下图所示:

Alt text


注意: 如果你将Arduino 板子插到电脑上了,但是在/dev/ 目录里面没有在到类似 ttyACM0 这样的端口号。

解决办法,将Arduino板子从电脑的USB口拔出,将当前屏幕界面切换到VMware 虚拟机里的Ubuntu 系统的界面,这时,再将Arduino 板子插到电脑上。你就可以在/dev/路径里面找到类似 ttyACM0 这样的端口号了。

Step 6 . 点击 编译 按钮

Alt text

Step 7 . 点击 上传 按钮

Alt text

其实,可以不用点击 编译 按钮,直接点击 上传 按钮就可以。因为点击完 上传 按钮后,它会再编译一遍,在将程序烧写到板子上。

现在提示 Done uploading,表示程序已经成功烧写到板子里面。

Alt text

搞定

Arduino 002 — 在Ubuntu(Linux) 中搭建Arduino开发环境

  • 我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位
  • 需要安装的Arduino的版本:Arduino 1.6.11(最新版本) Linux 32位

1. 下载 最新的 Arduino 开发软件

Step 1 . Arduino官网下载 linux 32位Arduino 开发软件:

Web:https://www.arduino.cc/en/Main/Software

2. 解压

Step 2 . 解压arduino-1.6.11-linux32.tar.xz

1
2
cd ~/Downloads
tar -xvJf arduino-1.6.11-linux32.tar.xz

Alt text

Step 3 . 将解压后的文件(arduino-1.6.11)移动到 /opt 目录下:

1
2
cd ~/Downloads
sudo mv arduino-1.6.6 /opt

Step 4 . 进入 /opt/arduino-1.6.11 文件夹,将Files窗口最大化。选中 arduino 文件,再在菜单栏中选择:Edits -> Preferences

Alt text

Step 5 . 这时弹出下面的窗口。选择:Behavior 选项卡,将Executable Text Files项里面,勾选:Ask each time 单选框。

Alt text

3. 运行 Arduino

现在你有两种方法运行 Arduino 软件:

方法一: 双击 arduino 文件: 弹出一个对话框,点击Run

Alt text

方法二:打开一个终端:路径切换到arduino文件所在路径(/opt/arduino-1.6.11/),运行它:

1
2
cd /opt/arduino-1.6.11/
./arduino

现在,恭喜你,已经安装成功了:

Alt text

4. 做一些配置,实现在终端的任何路径下,都可以运行 Arduino 软件

使用ln 命令(给文件创建软链接文件) Web:http://roclinux.cn/?p=752

我们希望在终端的任何路径下,输入 arduino 都可以启动 Arduino 软件:

Step 6 . 操作如下,打开一个终端,执行下面的命令。将 /opt/arduino-1.6.6/arduino 文件在 /bin/ 路径下创建一个软链接文件。

1
sudo ln -s /opt/arduino-1.6.11/arduino /bin/

搞定,这样就可以在终端中,不管当前路径是什么,都可以启动Arduino了。

试试看。现在,在终端中直接执行:

1
arduino

5. 如何给 Arduino 板子,烧写程序

请见博客:Arduino 003 Ubuntu(Linux) 系统下,如何给板子烧写程序 。

搞定

Arduino 001 Windows 10 安装Arduino IDE软件 和 驱动


在Win10 上安装最新的Arduino IDE (1.6.9安装包)很简单,并且不行要手动安装Arduino板子的驱动,整个安装过程都当前的简单,我以前在我的Win7系统上安装Arduino1.1.0时,需要手动安装板卡驱动,步骤相当繁琐。

1. 先连接Arduino与电脑。

2. 下载Arduino IDE软件

然后,到这个网址 (这个网站打开时,有点慢。)下载最新的Arduino IDE 软件。(记住安装路径,因为后面要用上。) Alt text

3. 安装驱动

打开控制面板 -> 设备管理器 -> 端口

Alt text

驱动已经安装成功。

4. 测试Arduino IDE软件是否可以使用:

选择办卡:Arduino/Genuino Uno

Alt text

然后,选择端口:

Alt text

测试:随便导入一个程序:Blink

Alt text

点击:验证

Alt text

Alt text

点击:上传

Alt text

Alt text

实验现象

现在看到的实验现象就是:板子上的A13的LED在闪烁。

搞定


参考网站:

https://www.arduino.cc/en/Guide/Windows?setlang=cn

其他网站,没有用上:

http://www.arduino.cn/thread-1008-1-1.html

Python3 大型网络爬虫实战 — 给 Scrapy 爬虫项目设置为防反爬


开发环境

  • Python第三方库:lxml、Twisted、pywin32、scrapy
  • Python 版本:python-3.5.0-amd64
  • PyCharm软件版本:pycharm-professional-2016.1.4
  • 电脑系统:Windows 10 64位

如果你还没有搭建好开发环境,请到这篇博客


所有的设置都是在scrapy爬虫项目中的settings.py 文件中进行设置。

Step 1 . 设置爬虫不遵循 robots.txt协议

1
2
# Obey robots.txt rules
ROBOTSTXT_OBEY = False

Alt text

想要了解什么是robots.txt协议,请访问这篇博客:解析 robots.txt 文件

Step 2 . 设置取消Cookies

1
2
# Disable cookies (enabled by default)
COOKIES_ENABLED = False

Alt text

Cookies

简单的说,Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都记录下来。当下次你再光临同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你。

Step 3 . 设置用户代理值(USER_AGENT

1
2
# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/xxx (Windows xxx; Winxx; xxx) AppleWebKit/xxx (KHTML, like Gecko) Chrome/xxxx Safari/xxx'

Alt text

这个 用户代理可以在浏览器里面找到:

随便浏览一个网页,按F12 -> Network -> F5,随便点击一项,你都能看到有 User-agent 这一项,将这里面的内容拷贝就可以。

Alt text

Step 4 . 设置IP

对于这一步,如果你没有做什么违法的事情,可以不用设置。仅仅上面的三个步骤,就可以将那些具有反爬虫机制的网站可以正常爬取了。