字符集与编码之BOM

  大端法:以两个UTF-16的编码0x0048与0x4F60为例,写成00 48 4F 60,00与4F都属于高位,这种高位在前的称之为大端法(Big endian)。
  小端法:如果书写成48 00 60 4F,这种低位在前的写法称之为小端法(Little endian)
  其实大小端法是从存储层面考虑的。

OpenCV 第2篇

Open处理视频

打开摄像头

要使用摄像头,需要使用cv2.VideoCapture(0)创建VideoCapture对象,参数0指的是摄像头的编号,如果电脑有两个摄像头的话访问第二个摄像头就传入1,以此类推。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 打开摄像头并灰度化显示
import cv2
capture=cv2.VideoCapture(0)
while(True):
# 获取一帧
ret,frame=capture.read()
# 将这帧转为灰度图
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1)==ord('q'):
break
capture.release()
cv2.destoryAllWindows()

字符集与编码

基本概念

比特(bit)
  也可以称为“位”,是计算机信息中的最小单位,binary digit(二进制数位)的缩写,指的是二进制中的一位。
字节(Byte)
  8位(bit)构成一个字节(Byte)
字符(Character)
  文字和符号的总称,可以是各个国家的文字、标点符号、图形符号、数字等
字符集(Character Set)
  为什么要有字符集?在计算机屏幕上是实体化的文字,而在计算机存储介质中存放的实际是二进制比特流,那么两者之间的转换规则就需要一个统一标准。为了实现转换标准,各种字符集标准就此出现。 简单来说,字符集规定了某个文字对应的二进制存放方式(编码)和某二进制数值串代表了哪个文字(解码)的转换关系。如ASCII、utf-8等就是字符集。
字符编码与解码
  文字到0、1的映射称为编码,反过来从0、1到文字叫解码。

OpenCV基础

OpenCV简介

OpenCV结构

  OpenCV有两个大版本,即OpenCV2和OpenCV3。根据功能和需求的不同,OpenCV中的函数接口大致可以分为如下几部分:

  • core:核心模块,包括了OpenCV中最基本的结构(矩阵、点线和形状等)以及相关的基础运算/操作
  • imgproc:图像处理模块,包含和图像相关的基础功能(滤波、梯度、改变大小等),以及一些衍生的高级功能(图像分割、直方图、形态分布和边缘/直线提取等)。
  • highgui:提供了用户界面和文件读取的基本函数,比如图像显示窗口的生成和控制,图像/视频文件的IO等。

Multiprocessing

  python使用全局解释器锁(GIL),他会将进程中的线程序列化,也就是多核cpu实际上并不能达到并行提高速度的目的,而使用多进程则是不受限的,所以实际应用中都是推荐多进程的。使用多进程往往是用来处理CPU密集型(科学计算)的需求,如果是IO密集型(文件读取,爬虫等)则可以使用多线程去处理。

logging模块的使用

日志的相关概念

  日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。一个事件可以用一个可包含可选变量数据的消息来描述。此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别。

User-Agent

  User Agent,用户代理,是HTTP协议中的一部分。是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计。