目录
- 简介
- 如何安装
- 图像数据处理简单操作
- 视频数据处理简单操作
一、简介
在计算机视觉项目的开发中,OpenCV作为最大众的开源库,拥有了丰富的常用图像处理函数库,可用于开发实时的图像处理、计算机视觉以及模式识别程序。采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易干上手,让开发人员更多的精力花在算法的设计上
本文将主要介绍OpenCV开发的一些基础知识、入门上手的方法与步骤等,
OpenCV 常用链接:
OpenCV 官网
OpenCV GitHub 主页
OpenCV 中国 Wiki 论坛
二、如何安装
打开你的PyCharm点开terminal控制台
先输入 pip list
查看是否安装的有 opencv-python
如果没有,输入以下命令安装:
python
pip install opencv-python
再输入 pip list
查看是否成功安装 opencv-python
三、 图像数据处理
- 加载图片和展示图片
获取本地一张图片,将图片以彩色和灰色展示出来
Python代码如下:
python
import cv2
#定义一个图片地址
img_path = r'./11.jpg'
#以彩色模式读取图片 cv2.IMREAD_COLOR
image_color = cv2.imread(img_path,cv2.IMREAD_COLOR)
#以灰度模式读取图片
image_gray = cv2.imread(img_path,cv2.IMREAD_GRAYSCALE)
#显示图片
cv2.imshow('color image',image_color)
cv2.imshow('gray image',image_gray)
#等待用户按键,然后关闭窗口,不写下面方法,图片会闪一下退出,不会停留
cv2.waitKey(0)
cv2.destroyAllWindows()
结果如下:
- 图片缩放
获取本地一张图片,将图片以0.75倍比例显示出来
Python代码如下:
python
import cv2
#读取图片
image = cv2.imread('./11.jpg')
#检查图片是否正常加载
if image is None:
print("Error:Could not load image")
exit()
#获取图片的原始尺寸
#image.shape[:2] 意思是正常图片会有 (高,宽,通道)属性 通道属性不用修改,只取前两个属性
original_height,original_width = image.shape[:2]
#计算新的尺寸
new_width = int(original_width * 0.75)
new_height = int(original_height * 0.75)
#使用cv2.resize进行图片缩放 image原图片 dsize新尺寸 interpolation压缩时候使用area差值算法
resized_image = cv2.resize(image, (new_width, new_height), interpolation = cv2.INTER_AREA)
#显示原始图片和缩放后的图片
cv2.imshow("Original Image", image)
cv2.imshow("Resized Image", resized_image)
#等待用户按键,然后关闭窗口,不写下面方法,图片会闪一下退出,不会停留
cv2.waitKey(0)
cv2.destroyAllWindows()
结果如下:
- 图片翻转
获取本地一张图片,将图片以翻转90度、180度、270度展示出来
Python代码如下:
python
import cv2
#读取图片
image = cv2.imread("./11.jpg")
#使用cv2.rotate()函数旋转图片
rotate_90 = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) #顺时针旋转90度
rotate_180 = cv2.rotate(image, cv2.ROTATE_180) #顺时针旋转180度
rotate_270 = cv2.rotate(image,cv2.ROTATE_90_COUNTERCLOCKWISE) #顺时针旋转270度
cv2.imshow('original',image)
cv2.imshow('rotate_90',rotate_90)
cv2.imshow('rotate_180',rotate_180)
cv2.imshow('rotate_270',rotate_270)
cv2.waitKey(0)
结果如下:
- 图片保存
读取一张图片,将图片保存下来
Python代码如下:
python
import cv2
#获取本地图片
image = cv2.imread("./11.jpg")
#如果图像不为空,则保存图像
if image is not None:
cv2.imwrite("./output_image.jpg", image)
else:
print("无法读取图像")
四、视频数据处理
- 读取摄像头/视频
打开电脑摄像头,一帧一帧展示画面
Python代码如下
python
import cv2
#创建一个 VideoCapture 对象,参数 0 表示使用默认的摄像头,也可以传入一个视频文件的路径
cap = cv2.VideoCapture(0) #打开电脑的摄像头
while True: #读取摄像头里的信息
#读取一帧 数据在frame中存储 ret是用来判断有没有读取成功
ret, frame = cap.read()
#如果读取成功,显示这一帧
if ret:
cv2.imshow('frame', frame)
#按'q'键退出循环 waitKey加的延时,画面之间至少要间隔1ms
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#释放资源并关闭窗口
cap.release()
cv2.destroyWindow(frame)
结果如下:
如需打开本地视频,修改:
python
cap = cv2.VideoCapture("./piano.mp4") #打开本地视频
- 录制电脑摄像视频保存到本地
保存电脑摄像头的每一帧,输出到本地MP4文件中
Python代码如下
python
import cv2
#定义视频捕捉对象
cap = cv2.VideoCapture(0)
#检查是否成功打开摄像头
if not cap.isOpened():
print("Error opening video stream or file")
exit()
#获取摄像头的帧宽度和帧高度
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
#定义视频编码器和输出文件
fourcc = cv2.VideoWriter_fourcc(*'mp4v') #保存成MP4文件
out = cv2.VideoWriter("./output.mp4",fourcc,20.0,(frame_width,frame_height)) #帧率为20.0fps
while True:
ret, frame = cap.read()
if not ret:
print("Error reading video stream or file")
break
#将当前帧写入输出视频文件
out.write(frame)
#显示当前帧
cv2.imshow('frame',frame)
# 按'q'键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#释放资源并关闭窗口
cap.release()
out.release()
cv2.destroyAllWindows()