OpenCV的基本用法全解析

《小白入门:OpenCV的基本用法全解析》

嗨,朋友们!之前咱们知道了OpenCV在机器视觉里就像个超级厉害的瑞士军刀,那今天咱们就来好好唠唠,**OpenCV到底该怎么用呢?**这就像是拿到了一把好剑,咱们得知道怎么耍起来才行。

一、安装OpenCV

在开始使用OpenCV之前,咱们得先把它安装好。这就像是你要做饭,得先有锅碗瓢盆一样。如果你是用pip来管理Python包的话,那安装就很简单啦,只需要在命令行里输入:

复制代码
pip install opencv - python

等安装完成,你就已经迈出了使用OpenCV的第一步啦。

二、读取和显示图像

(一)读取图像

这是OpenCV最基本的操作之一,就像你打开相册看照片一样。你可以用cv2.imread()函数来读取图像文件。比如说:

复制代码
import cv2

# 读取图像文件,这里假设图像文件名为test.jpg,在当前工作目录下
img = cv2.imread('test.jpg')

这里的img就是一个包含了图像数据的对象啦。

(二)显示图像

读取了图像之后,咱们得看看它吧。这时候就用到了cv2.imshow()函数。不过要注意哦,这个函数显示图像的时候,需要一个窗口名字作为第一个参数,图像对象作为第二个参数。而且,为了让窗口一直显示着,我们还得加上cv2.waitKey(0),这就像是告诉程序在这里等一下,等用户按下任意键再继续。最后,看完图像后要用cv2.destroyAllWindows()来关闭所有打开的窗口。完整的代码就像这样:

复制代码
import cv2

img = cv2.imread('test.jpg')
cv2.imshow('My Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、图像的基本处理

(一)调整图像大小

有时候图像太大了或者太小了,我们想调整一下它的大小。这时候就可以用cv2.resize()函数啦。比如说,你想把图像的宽度调整为原来的一半,高度按照原来的比例自动调整,可以这样做:

复制代码
import cv2

img = cv2.imread('test.jpg')
height, width = img.shape[:2]
new_width = int(width / 2)
# 这里使用cv2.INTER_AREA插值方法,适合缩小图像
resized_img = cv2.resize(img, (new_width, height), interpolation = cv2.INTER_AREA)
cv2.imshow('Resized Image', resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

(二)转换图像颜色空间

图像有不同的颜色空间,像常见的BGR(OpenCV默认的颜色空间)、灰度图等。如果你想把彩色图像转换为灰度图,就可以用cv2.cvtColor()函数。这在很多图像处理任务里很有用,比如边缘检测的时候,灰度图处理起来更方便。

复制代码
import cv2

img = cv2.imread('test.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray Image', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、图像的滤波操作

(一)高斯滤波

高斯滤波就像是给图像做了一个平滑的处理,可以让图像变得更加细腻,去除那些小噪点。用cv2.GaussianBlur()函数就可以实现啦。

复制代码
import cv2

img = cv2.imread('test.jpg')
# 这里的(5, 5)是高斯核的大小,0表示根据核的大小自动计算标准差
blurred_img = cv2.GaussianBlur(img, (5, 5), 0)
cv2.imshow('Blurred Image', blurred_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

(二)中值滤波

中值滤波对于去除椒盐噪声特别有效。它是用像素邻域内的中值来代替中心像素的值。可以用cv2.medianBlur()函数来实现。

复制代码
import cv2

img = cv2.imread('test.jpg')
# 这里的5表示滤波器的大小
median_blurred_img = cv2.medianBlur(img, 5)
cv2.imshow('Median Blurred Image', median_blurred_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

五、边缘检测

边缘检测就像是给图像做了一个轮廓勾勒,找出图像里物体的边缘。OpenCV里有好几种边缘检测的方法,其中最著名的是Canny边缘检测,用cv2.Canny()函数。

复制代码
import cv2

img = cv2.imread('test.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 这里的100和200是Canny算法的两个阈值
edges = cv2.Canny(gray_img, 100, 200)
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

六、绘制形状和文字

(一)绘制形状

在图像上绘制形状也是很常见的操作,比如画个矩形、圆形之类的。以画矩形为例,可以用cv2.rectangle()函数。

复制代码
import cv2

img = cv2.imread('test.jpg')
# 这里的(10, 10)是矩形左上角的坐标,(100, 100)是矩形右下角的坐标,(0, 255, 0)是矩形的颜色(BGR格式),2是线条的粗细
cv2.rectangle(img, (10, 10), (100, 100), (0, 255, 0), 2)
cv2.imshow('Image with Rectangle', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

(二)绘制文字

如果想在图像上添加文字,可以用cv2.putText()函数。

复制代码
import cv2

img = cv2.imread('test.jpg')
font = cv2.FONT_HERSHEY_SIMPLEX
# 这里的'Hello World'是要写的文字,(10, 500)是文字的起始坐标,1是字体大小,(255, 255, 255)是文字的颜色(白色),2是线条粗细
cv2.putText(img, 'Hello World', (10, 500), font, 1, (255, 255, 255), 2)
cv2.imshow('Image with Text', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

七、总结

好啦,朋友们,上面这些就是OpenCV的一些基本用法啦。从读取和显示图像,到图像的基本处理、滤波、边缘检测,再到绘制形状和文字,这些都是构建更复杂机器视觉应用的基础。就像盖房子,先把砖头、水泥这些基础材料准备好,才能盖起高楼大厦。

小伙伴们,你们有没有试着用OpenCV做一些小的图像处理项目呢?或者在使用过程中遇到了什么问题呢?欢迎在评论区留言讨论哦。

相关推荐
啾啾Fun6 分钟前
PyTorch 核心三件套:Tensor、Module、Autograd
人工智能·pytorch·python
双向339 分钟前
医疗健康Agent:诊断辅助与患者管理的AI解决方案
人工智能
用户51914958484513 分钟前
Node.js流基础:高效处理I/O操作的核心技术
人工智能·aigc
xybDIY30 分钟前
智能云探索:基于Amazon Bedrock与MCP Server的AWS资源AI运维实践
运维·人工智能·aws
星期天要睡觉1 小时前
机器学习——KMeans聚类算法(算法原理+超参数详解+实战案例)
人工智能·机器学习·kmeans·聚类
SHIPKING3932 小时前
【GPT-OSS 全面测评】释放推理、部署和自主掌控的 AI 新纪元
人工智能·gpt
CareyWYR2 小时前
每周AI论文速递(250804-250808)
人工智能
阿巴阿阿巴巴巴巴2 小时前
【深度学习】动手深度学习PyTorch版——安装书本附带的环境和代码(Windows11)
人工智能·pytorch·深度学习
2501_924880703 小时前
手机拍照识别中模糊场景准确率↑37%:陌讯动态适配算法实战解析
人工智能·深度学习·算法·计算机视觉·智能手机·视觉检测
9呀3 小时前
【人工智能99问】NLP(自然语言处理)大模型有哪些?(20/99)
人工智能·自然语言处理