也许你会偶然发现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
继续阅读 »
本节实现的是使用OpenCV里自带的函数,计算程序的执行时间。
获取系统时钟数
获取系统时钟频率
实现过程
初始时间
不再赘述,代码如下。
``` python
time start
t1 = cv2.getTickCount()
```
执行代码
我这里执行的是之前绘制直方图的代码,请参考我的博客和GitHub。
结束时间
获取程序结束时间。
```python
time end
t2 = cv2.getTickCount()
```
计算执行秒数
利用getTickFrequency()获取时钟频率。
python
t = (t2-t1)/cv2.getTickFrequency()
print
继续阅读 »
平时工作中,有时候需要将自己写的Python脚本在Windows运行,但是若Windows没有安装Python,那么就不能直接运行Python脚本。本文介绍一种方法,通过PyInstaller工具将Python脚本打包成一个可执行文件,可以直接在Windows运行,不管Windows是否安装Python都可以运行该可执行文件,详细步骤如下:
继续阅读 »
本节实现的是使用OpenCV里自带的函数,将两幅图片按照特定的比例融合
实现过程
引用与读取图片
不再赘述,代码如下。
```python
import cv2
import numpy
img1 = cv2.imread('test1.png')
img2 = cv2.imread('test2.png')
```
融合图片
利用addWeighted()函数,将图片1的比例设置为0.6,图片2的0.4,如下:
python
mg_mix = cv2.addWeighted(img1, 0.6, img2, 0.4, 0)
显示图片
分别显示两幅原图和融合后的图片:
```python
cv2.imsh
继续阅读 »
缘由
最近在折腾一个小东西需要抓取网上的页面,然后进行解析,将结果放到数据库中。了解到Python在这方面有优势,便选用之。因为我有台服务器上面安装有mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里记录一下,大家共勉。
python中mysql的调用
百度之后可以通过MySQLdb进行数据库操作,查看文档,了解到python中提供了一个_mysql时直接实现了mysql的c语言API。MySQLdb是对其在更高一层的封装,因此,使用起来更加方便。我们可以使用_mysql,但更好的方法是使用MySQLdb
more
安装中遇到的问题
在这个页面http://sourceforge.net/projec
继续阅读 »
1、yum install libjpeg-devel gcc gcc-c++ zlib-devel bzip2-devel openssl-devel xz-libs
2、下载python最新版2.7.10解压缩后进行安装
```
tar -zxvf Python-2.7.10.tgz
cd Python-2.7.10/
./configure --prefix=/usr/local
make all
make install
make clean
make distclean
继续阅读 »
本节实现的是提取出彩色图像的三个通道。
打开一个彩色图片
利用系统函数分离三通道
自行分离三通道
显示显示三通道图片
实现过程
引用与打开图片
不再赘述,代码如下。
``` 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
继续阅读 »
本节实现的是使用OpenCV里自带的函数,检测出视频里图像中的蓝色和天蓝色、青色,比如我的手机背景、我衣服上的蓝色格子,墙砖的蓝色和学生证照片上的蓝色背景。
设置“蓝色”HSV范围
BGR转HSV
捕获摄像头视频
获取蓝色部分mask
图像按位与操作
显示蓝色部分图像
实现过程
定义视频对象
视频对象用于捕获摄像头视频流。
``` python
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
```
设置HSV中蓝色、天蓝色范围
这里主要参考了这个博客,我设置的颜色范围如下。
```python
set blue thresh
lower_blue=
继续阅读 »
本节实现的是使用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
import cv2
import numpy
img1 = cv2.imread("test1.jpg", 0) #灰度图像
img2 = cv2.imread("test2.jpg") #彩色图像
```
灰度图像直方图
opencv里自带了calcHist()函数,可以计算一幅图像中各个像素值出现的次数,其函数的各个参数如下:
python
hist = cv2.calcHist([i
继续阅读 »