《小白入门: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 cv2img = cv2.imread('test.jpg')
cv2.imshow('My Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、图像的基本处理
(一)调整图像大小
有时候图像太大了或者太小了,我们想调整一下它的大小。这时候就可以用cv2.resize()
函数啦。比如说,你想把图像的宽度调整为原来的一半,高度按照原来的比例自动调整,可以这样做:
import cv2img = 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 cv2img = 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 cv2img = 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 cv2img = 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 cv2img = 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 cv2img = 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 cv2img = 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做一些小的图像处理项目呢?或者在使用过程中遇到了什么问题呢?欢迎在评论区留言讨论哦。