文章目录
前言1. 安装OpenCV1.1 安装Python环境1.2 安装OpenCV库
2. 读取图像2.1 读取原图2.2 读取图片的灰度图并保存
3.图片修改3.1 图片打码3.2 图片组合3.3 图片缩放
4.图像运算4.1 图像加法运算:4.2 cv2.add()运算4.3 图像加权运算
5.视频读取结语:
前言
引言 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它包含了数百种计算机视觉算法,广泛应用于图像处理、视频分析、物体检测、人脸识别等领域。本文将带你从安装OpenCV开始,逐步了解其基本操作。
1. 安装OpenCV
1.1 安装Python环境
首先,确保你已经安装了Python环境。如果没有安装,可以从Python官网下载并安装。
1.2 安装OpenCV库
在Python中,可以通过pip命令来安装OpenCV库。打开终端或命令提示符,输入以下命令:
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 读取图像
2.1 读取原图
import cv2
a = cv2.imread('timg98.jpg')#读取图片
# print(a) # NumPy数组,其中存储了读取的图像文件的像素值。
cv2.imshow('tu',a) #显示图片。显示图片的名称,显示的图片数据。
b = cv2.waitKey(0)#是在一个给定的时间内(单位ms)触发;如果用户没有按下键,到时自动结束。设置waitKey(0),代表按任意键继续。
print(b)#当前按下按键 ASCII码值
cv2.destroyAllWindows() #关闭所有打开的窗口并释放所有相关内存。
# # # 对于简单的程序不需要调用这些函数,应用程序的所有资源和窗口在退出时都会由操作系统自动关闭 。
# # '''调试模型观察shape,dtype、size属性'''
print("图像形状 (shape):", a.shape) #高、宽、通道数
print("图像数据类型 (dtype):", a.dtype) #无符号 8 位整数,用于表示像素值的范围在 0 到 255 之间。
print("图像大小 (size):", a.size) #表示图像的大小,通常是一个整数,表示图像的总像素数,即图像的高度乘以宽度乘以通道数
2.2 读取图片的灰度图并保存
'''---------------------读取图片的灰度图------------------------'''
b = cv2.imread(r'./timg98.jpg',cv2.IMREAD_GRAYSCALE)
# print(b)
cv2.imshow('xx',b)
a=cv2.waitKey(0) #是在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下键,到时自动运行下一行。设置waitKey(0),代表按任意键继续。
cv2.destroyAllWindows() #关闭所有打开的窗口并释放所有相关内存。
print("图像形状 (shape):", b.shape)
print("图像数据类型 (dtype):", b.dtype)
print("图像大小 (size):", b.size)
'''图片保存'''
cv2.imwrite('timg9888_GRAY.jpg',b)
3.图片修改
3.1 图片打码
import numpy as np
# 图片打码
a = cv2.imread(r'./timg98.jpg')
a[100:200,200:300] = np.random.randint(0,256,(100,100,3))#矩阵赋值必须是相同大小
cv2.imshow('masaike',a)
cv2.waitKey(1000000)
cv2.destroyAllWindows()
3.2 图片组合
a = cv2.imread('timg98.jpg')
b = cv2.imread('zl.png')
b[200:350,200:350] = a[50:200,100:250]#注意:矩阵的大小必须要统一。
cv2.imshow('b',b)
cv2.imshow('a',a)
cv2.waitKey(100000)
cv2.destroyAllWindows()
3.3 图片缩放
用于调整图像的大小。它有以下几个参数:src:要调整大小的输入图像,可以是numpy数组、PIL图像或其他类型。dsize:输出图像的大小,可以是一个元组,例如(宽,高),或者使用整数标量来缩放原始图像。如果 dsize为None,则根据scalefx和scalefy缩放原始图像。fx:沿x轴的缩放系数。fy:沿y轴的缩放系数。
a = cv2.imread('timg98.jpg')
a_new = cv2.resize(a,(200,600)) # 宽、高
# a_new = cv2.resize(a,dsize=None,fx=1.5,fy=1.5)#也可以这样resize
# print(a.shape) # 高、宽、通道数
cv2.imshow('a',a)
cv2.imshow('a_new',a_new)
cv2.waitKey(100000)
cv2.destroyAllWindows()
4.图像运算
4.1 图像加法运算:
对于+号运算,当对图像a,图像b进行加法求和时,遵循以下规则:
1.当某位置像素相加得到的数值小于255时,该位置数值为两图像该位置像素相加之和。 2.当某位置像素相加得到的数值大于255时,该位置数值将截断结果并将其减去 256 例如:相加后是260,实际是260-256= 4。
a = cv2.imread('timg98.jpg')
b = cv2.imread('zl.png')
c = a+10 #图片,
cv2.imshow('yuan',a)
cv2.imshow('a+10',c)
cv2.waitKey(100000)
c = a[50:450,50:400]+b[50:450,50:400]
cv2.imshow('a+b',c)
cv2.waitKey(100000)
4.2 cv2.add()运算
当对图像a,图像b进行加法求和时,遵循以下规则:
当某位置像素相加得到的数值小于255时,该位置数值为两图像该位置像素相加之和。当某位置像素相加得到的数值大于255时,该位置数值为255
a = cv2.imread('timg98.jpg')
b = cv2.imread('zl.png')
b = cv2.resize(b,(400,400))
a = cv2.resize(a,(400,400))
c = cv2.add(a,b) #也可以使用使用
cv2.imshow('a add b',c)
cv2.waitKey(100000)
cv2.destroyAllWindows()
4.3 图像加权运算
就是在计算两幅图像的像素值之和时,将每幅图像的权重考虑进来,可以用公式表示为dst=src1×α+src×β+γ
a = cv2.imread('timg98.jpg')
b = cv2.imread('zl.png')
b = cv2.resize(b,(400,400))
a = cv2.resize(a,(400,400))
c =cv2.addWeighted(a,0.2,b,0.8,0) # 10:图像的亮度值(常数),将添加到加权和上
cv2.imshow('addWeighted',c)
cv2.waitKey(100000)
cv2.destroyAllWindows()
5.视频读取
import cv2
# 打开视频文件
video_capture = cv2.VideoCapture('1.mp4') # 摄像头:0
# 检查视频是否成功打开
if not video_capture.isOpened():
print("无法打开视频文件")
exit()
# 循环读取视频帧
while True:
# 逐帧读取视频
ret, frame = video_capture.read() #ret是布尔值,表示是否成功读取了帧,frame 是读取到的帧
# 检查是否成功读取帧
if not ret:
break
# 将图像从一种颜色空间转换为另一种颜色空间。
frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
# 显示当前帧
cv2.imshow('Video', frame)
# 检查用户是否按下 'esc' 键,如果是则退出循环
if cv2.waitKey(10) == 27:
break
# 释放资源
video_capture.release()
cv2.destroyAllWindows()
结语:
本文介绍了OpenCV的基本安装和使用方法,包括图像的读取、图像的修改、图像的运算以及视频的处理。OpenCV功能强大,涵盖了计算机视觉的各个方面,希望本文能为你入门OpenCV提供帮助。