Python-OpenCV,基于标准文档的实例(一)
2018-03-27 00:00
417 查看
关于OpenCV
OpenCV是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块。在Windows 上安装OpenCV-Python
一.
下载pip工具包并解压安装,python setup.py install下载地址:https://pypi.python.org/pypi/pip
测试是否成功安装
pip -v
二.
在pip解压目录下启动cmd窗口,或者将pip解压目录添加到path环境变量中,在cmd窗口中运行以下安装代码:pip install --upgrade setuptools pip install numpy Matplotlib pip install opencv-python
以上测试在Python中成功安装并配置openCV
三.
cv2.imread()读入图像
import numpy as np import cv2 img=cv2.imread('cat.png',0) print(img)
方法有两个参数
args[0]:读入一副彩色图像。图像的透明度会被忽略,这是默认参数。
args[1]:以灰度模式读入图像
四.
cv2.imshow()显示图像
import numpy as np import cv2 img=cv2.imread('cat.png',0) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()
cv2.waitKey()若传入的参数为0,则那它将会无限期的等待键盘输入。
cv2.destroyAllWindows()可以删除任何我们建立的窗口。如果你想删除特定的窗口可以使用cv2.destroyWindow(),在括号内输入你想删除的窗口名。
五.
cv2.imwrite()保存图像
按键盘
s,保存图片
import numpy as np import cv2 img=cv2.imread('cat.png',0) cv2.imshow('image',img) k=cv2.waitKey(0) if k==27: cv2.destroyAllWindows() elif f==ord('s'): cv2.imwrite('cat_copy.png',img) cv2.destroyAllWindows()
如果你用的是64 位系统,你需要将 k = cv2.waitKey(0) 这行改成k =cv2.waitKey(0)&0xFF。
六.
Matplotib 是python 的一个绘图库,里头有各种各样的绘图方法。你可以学习怎样用Matplotib 显示图像。你可以放大图像,保存它等等.import numpy as np import cv2 from matplotlib import pyplot as plt img=cv2.imread('cat.png',0) plt.imshow(img, cmap = 'gray', interpolation = 'bicubic') plt.xticks([]), plt.yticks([]) plt.show()
七.
用摄像头捕获视频,我们经常需要使用摄像头捕获实时图像。OpenCV 为这中应用提供了一个非常简单的接口。让我们使用摄像头来捕获一段视频,并把它转换成灰度视频
显示出来。
import numpy as np import cv2 cap=cv2.VideoCapture(0) while(True): ret,frame =cap.read() gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) cv2.imshow('frame',gray) if cv2.waitKey(1)&0xFF==ord('q'): break cap.release() cv2.destroyAllWindows()
按 ’ q ’ 退出运行,同时关闭摄像头。
八.
从文件中播放视频 : 与从摄像头中捕获一样,你只需要把设备索引号改成视频文件的名字。在播放每一帧时,使用cv2.waiKey() 设置适当的持续时间。如果设置的太低视频就会播放的非常快,如果设置的太高就会播放的很慢(你可以使用这种方法控制视频的播放速度)。通常情况下25 毫秒就可以了。
import numpy as np import cv2 cap=cv2.VideoCapture('filename.mp4') while(True): ret , frame = cap.read() gray = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY) cv2.imshow('frame',gray) if cv2.waitKey(1) &0xFF ==ord('q'): break cap.release() cv2.destroyAllWindows()
九.
在我们捕获视频,并对每一帧都进行加工之后我们想要保存这个视频。对于图片来时很简单只需要使用cv2.imwrite()。
import numpy as np import cv2 cap = cv2.VideoCapture(0) fourcc=cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480)) while(cap.isOpened()): ret, frame = cap.read() frame = cv2.flip(frame,1) if ret: out.write(frame) cv2.imshow('frame',frame) else: break if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() out.release() cv2.destroyAllWindows()
十.
OpenCV 中的绘图函数cv2.line()
cv2.circle()
cv2.rectangle()
cv2.ellipse()
cv2.putText()
画线:要画一条线,你只需要告诉函数这条线的起点和终点。
import numpy as np import cv2 img=np.zeros((512,512,3), np.uint8) cv2.line(img,(0,0),(511,511),(255,0,0),5) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()
画矩形:要画一个矩形,你需要告诉函数的左上角顶点和右下角顶点的坐标。
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
画圆:要画圆的话,只需要指定圆形的中心点坐标和半径大小。
cv2.circle(img,(447,63), 63, (0,0,255), -1)
画椭圆:画椭圆比较复杂,我们要多输入几个参数。一个参数是中心点的位置坐标。下一个参数是长轴和短轴的长度。椭圆沿逆时针方向旋转的角度。椭圆弧演顺时针方向起始的角度和结束角度,如果是0 很360,就是整个椭圆。
画多边形:画多边形,需要指点每个顶点的坐标。用这些点的坐标构建一个大小等于行数X1X2 的数组,行数就是点的数目。
pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32) pts=pts.reshape((-1,1,2)) cv2.polylines(img,[pts],True,(0,255,255))
最后得到下面的代码及图片
import numpy as np
import cv2
img=np.zeros((512,512,3), np.uint8)
cv2.line(img,(0,0),(511,511),(255,0,0),5)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv2.circle(img,(447,63), 63, (0,0,255), -1)
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32) pts=pts.reshape((-1,1,2)) cv2.polylines(img,[pts],True,(0,255,255))
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
十一:
在图片上添加文字import numpy as np import cv2 img=np.zeros((512,512,3), np.uint8) font=cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()
十二:
把鼠标当画笔:cv2.setMouseCallback()
双击画圆
import numpy as np import cv2 def draw_circle(event,x,y,flags,param): if event==cv2.EVENT_LBUTTONDBLCLK: cv2.circle(img,(x,y),100,(255,0,0),-1) img=np.zeros((512,512,3),np.uint8) cv2.namedWindow('image') cv2.setMouseCallback('image',draw_circle) while(1): cv2.imshow('image',img) if cv2.waitKey(20)&0xFF==27: break cv2.destroyAllWindows()
根据我们选择的模式在拖动鼠标时绘制矩形或者是圆圈
import cv2 import numpy as np drawing=False mode=True ix,iy=-1,-1 def draw_circle(event,x,y,flags,param): global ix,iy,drawing,mode if event==cv2.EVENT_LBUTTONDOWN: drawing=True ix,iy=x,y elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON: if drawing==True: if mode==True: cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1) else: cv2.circle(img,(x,y),3,(0,0,255),-1) elif event==cv2.EVENT_LBUTTONUP: drawing==False img=np.zeros((512,512,3),np.uint8) cv2.namedWindow('image') cv2.setMouseCallback('image',draw_circle) while(1): cv2.imshow('image',img) k=cv2.waitKey(1)&0xFF if k==ord('m'): mode=not mode elif k==27: break
未完待续…
附上参考openCV-Python中文文档下载地址:https://linux.linuxidc.com/index.php?folder=MjAxNcTq18rBzy841MIvOcjV
相关文章推荐
- Python-OpenCV,基于标准文档的实例(二)
- 基于python语言:Opencv3实例学习笔记1
- 基于python语言:Opencv3实例学习笔记2
- Python基于opencv的图像压缩算法实例分析
- opencv python 基于KNN的手写体识别的实例
- 基于Python的网页文档处理脚本实现
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
- 【基于C++和Python的Opencv3学习笔记之颜色空间缩减、ROI提取及多通道分离合并】
- 让基于Opencv的程序在别的机子上跑起来-实例
- Python3.2官方文档--标准接口和dir()函数
- Python通过OpenCV的findContours获取轮廓并切割实例
- python解析html提取数据,并生成word文档实例解析
- Opencv 基于MFC 显示图片 更改图片分辨率 保存图片 入门操作实例
- 基于openCV和PythonSMTP的天眼系统
- opencv教程(基于python)----图象金字塔
- 基于opencv的摄像头脸部识别抓取及格式储存(python)
- 基于java的串口通讯(附带实例+说明文档+测试工具)
- python3基于OpenCV实现证件照背景替换
- Python-基于OpenCV的摄像头圆心计算
- python基于mysql实现的简单队列以及跨进程锁实例详解