本节实现的是使用内建摄像头捕获视频,并保存视频。
创建摄像头对象
逐帧显示实现视频播放
保存摄像头的每一帧图像
实现过程
引用
不再赘述,代码如下。
python
import cv2
import numpy
创建摄像头对象
使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。
python
cap = cv2.VideoCapture(0)
定义写入视频格式和写入对象
利用cv2.cv.FOURCC(*'XVID')定义视频格式,然后创建视频写入对象。
``` python
Define the codec and create
继续阅读 »
也许你会偶然发现Python的多线程程序使用Ctrl-C杀不掉,必须拿到pid用kill -9才能干掉,研究这个问题的原因可以使得对Python多线程的信号处理及线程的退出机制有更好的理解。
假如有一个Python写成的用多线程模拟生产者-消费者的程序,代码如下:
class Producer(threading.Thread):
def run(self):
global count
while True:
if cond.acquire():
if count > 1000:
cond.wa
继续阅读 »
本节实现的是在图片上模拟机上椒盐噪声,主要过程如下。
打开一个图片
产生随机坐标
加上“椒盐”
显示加噪图片
实现过程
引用
这里我们需要引用cv2和numpy,cv2不言而喻,而NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
python
import cv2
import numpy
打开图片
cv2库里的函数imread()用来读取图片,imshow()可用于显示图片,此外imwrite可以用来写图片,即保存图片。这里把显示图片的窗口指定为“Image”。
python
img = cv2.imread("test.png")
加
继续阅读 »
平时工作中,有时候需要将自己写的Python脚本在Windows运行,但是若Windows没有安装Python,那么就不能直接运行Python脚本。本文介绍一种方法,通过PyInstaller工具将Python脚本打包成一个可执行文件,可以直接在Windows运行,不管Windows是否安装Python都可以运行该可执行文件,详细步骤如下:
继续阅读 »
缘由
最近在折腾一个小东西需要抓取网上的页面,然后进行解析,将结果放到数据库中。了解到Python在这方面有优势,便选用之。因为我有台服务器上面安装有mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里记录一下,大家共勉。
python中mysql的调用
百度之后可以通过MySQLdb进行数据库操作,查看文档,了解到python中提供了一个_mysql时直接实现了mysql的c语言API。MySQLdb是对其在更高一层的封装,因此,使用起来更加方便。我们可以使用_mysql,但更好的方法是使用MySQLdb
more
安装中遇到的问题
在这个页面http://sourceforge.net/projec
继续阅读 »
最近在学习python,基本的语法看了一遍了,想了解一下gui编程方面的知识,所以对Tkinter进行一些了解,此博客记录自己的学习过程。
我的第一个python gui程序
```
#!/usr/bin/evn python
# -- coding: utf-8 --
#filename:helloworld.py
继续阅读 »
本节实现的是提取出彩色图像的三个通道。
打开一个彩色图片
利用系统函数分离三通道
自行分离三通道
显示显示三通道图片
实现过程
引用与打开图片
不再赘述,代码如下。
``` python
import cv2
import numpy
img = cv2.imread("test.png")
```
系统函数分离三通道
opencv里自带了分离三通道的函数split(),返回值依次是蓝色、绿色和红色通道的灰度图,代码如下:
python
b, g, r = cv2.split(img)
cv2.imshow("Blue 1", b)
cv2.imshow("Green 1", g)
cv2.imshow("Red
继续阅读 »
通过SWIG在Py里调用cpp的方法
通过Python.h接口, 在cpp里使用python脚本
经常会做改动的业务逻辑在Py里做, cpp通过SWIG暴露出某些cpp内的对象和方法,给python做调用。 同时cpp内也会有CallNoRT来调用python脚本, 完成类似闭环的调用链。
继续阅读 »
本节实现的是使用OpenCV里自带的函数,绘制直线、长方形、圆形和椭圆。
绘制直线
绘制长方形
绘制圆形
绘制椭圆
添加文字
实现过程
引用与创建空图
不再赘述,代码如下。
``` python
import cv2
import numpy
empty image
img = np.zeros((512, 512, 3), np.uint8)
```
绘制直线
使用opencv自带的line()函数绘制一条对角线,其声明如下:
python
cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
其中各种参数的意义如下:
img
继续阅读 »
由于python实现了多线程的功能,现在为了提高计算机多核的效率,需要把多线程的程序修改成多进程的计算模式,但是发现进程和线程的执行还是有很大区别。也许之前的工作中没有关注过多线程和多进程的程序吧!
子进程和父进程的工作原理
在python中,使用os.fork()之后,在内存中把父进程的代码及内存分配情况拷贝一份生成子进程的运行空间,这样子进程的所有代码都与父进程一样,两个进程之间的运行是独立的,互不影响。
继续阅读 »