OpenCV入门指南:从安装到基本操作

OpenCV入门指南:从安装到基本操作

文章目录

前言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提供帮助。