python opencv教程
时间: 2023-05-09 08:04:27 浏览: 206
Python作为一门脚本语言,拥有着易学易用的特点,让编程变得更加简单。同时,Python还有大量的优秀的库支持,其中之一就是opencv。opencv是计算机视觉领域的一个非常优秀的库,它可以处理图像、视频、三维点云等。在Python中使用opencv可以轻易地处理图像和视频,并实现一些很酷的功能。下面就对Python opencv的教程进行总结。
1. 安装OpenCV库及其依赖库
在Python中安装opencv需要安装库和依赖库。安装Opencv需要使用pip工具,不过opencv还需要其他的库辅助。可以通过以下的命令来安装这些依赖库:
```python
pip install opencv-python numpy matplotlib Pillow imutils requests beautifulsoup4 pdf2image google-cloud-storage
```
2. 读取、显示和保存图像
使用opencv打开一个图像的方法很简单,可以使用cv2库里的imread()函数。读取完图像后,通过imshow()函数来显示图像,使用waitKey()等待按键操作。可以使用cv2库里的imwrite()函数保存读取到的图像。
```python
import cv2
#读取图像
img = cv2.imread('test.png')
#显示图像
cv2.imshow('Image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#保存图像
cv2.imwrite('test.png', img)
```
3. 简单的图像处理
opencv提供了一些简单的函数,来处理图像,比如:cvtColor()函数和threshold()函数等等。cvtColor()函数的作用是将图像的颜色空间从一种转化为另一种;Threshold()函数是将图像进行二值化。
```python
import cv2, numpy as np
#读取图像
img = cv2.imread('test.png')
#灰度图像
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#二值化
thresh, bin_img = cv2.threshold(gray_img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2.imshow("binary image",bin_img)
cv2.waitKey(0)
```
4. 使用鼠标在图像中画线条
opencv可以响应鼠标事件,可以通过实现回调函数,用鼠标进行道理和键盘事件等操作。下面的例子演示如何通过鼠标在图像中画线。
```python
import cv2
def draw_line(event,x,y,flags,param):
global draw, pt1, pt2
if event == cv2.EVENT_LBUTTONDOWN:
draw = True
pt1 = (x,y)
pt2 = (x,y)
elif event == cv2.EVENT_MOUSEMOVE:
if draw == True:
pt2 = (x,y)
elif event == cv2.EVENT_LBUTTONUP:
draw = False
pt2 = (x,y)
cv2.line(img,pt1,pt2,(255,0,0),2)
cv2.imshow('image',img)
img = cv2.imread('test.png')
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_line)
while True:
cv2.imshow('image',img)
if cv2.waitKey(1) == ord('q'):
break
cv2.destroyAllWindows()
```
5. 视频捕获和处理
opencv也可以通过调用摄像头,进行视频捕获和处理。使用VideoCapture()可以调用摄像头,并使用其中一个参数设定摄像头编号,如0表示第一个摄像头。
```python
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow('frame',frame)
# 按q退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```
总之,Python opencv教程非常丰富,这些例子只是冰山一角。如果想深入学习Python opencv,可以阅读opencv官方文档,或者参考一些优秀的Python opencv教程。
阅读全文