当前位置: 首页 > news >正文

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做一些小的图像处理项目呢?或者在使用过程中遇到了什么问题呢?欢迎在评论区留言讨论哦。

 

 

相关文章:

  • 【深度学习入门_机器学习理论】梯度提升决策树(GBDT)
  • C语言-状态模式详解与实践 - OTA升级状态机
  • 计算机网络层超全解析:从IP协议到路由算法
  • .gitignore使用指南
  • el-select 可搜索下拉框 在ios、ipad 无法唤出键盘,造成无法输入
  • Nginx请求头Hos头攻击
  • 【YOLO项目】毕设大作业之车道线检测
  • 【Linux系统】Linux权限讲解!!!超详细!!!
  • 二、Python核心编程
  • Tomcat常见漏洞攻略
  • Linux 启动Jar脚本设置开机自启【超级详细】
  • 蓝桥刷题note9(分发饼干,最长回文子串)
  • Windows server 2022域控制服务器的配置
  • 【Java基础-50.1】Java线程阻塞详解:类型、实现与案例分析
  • 1.1编译器概述笔记(努力持续记笔记)
  • 【江西棒垒球】如何参加奥运会·棒球5号位
  • Win98模拟器(安卓):重温经典,一键怀旧
  • 基于Spring Boot的供应商管理系统的设计与实现(LW+源码+讲解)
  • visual studio 使用ssh连接wsl失败原因
  • 神聖的綫性代數速成例題18. 正交變換、歐幾里得空間的同構、實對稱矩陣的正交相似對角化的應用”
  • 拍摄《我们这一代》的肖全开展“江浙沪叙事”
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛即将焕新登场
  • 美乌矿产协议预计最早于今日签署
  • 投资者建议发行优惠套票给“被套”小股东,张家界:将研究考虑
  • 讲座|为什么要不断地翻译叶芝的诗?它们为什么值得细读?
  • “上博号”彩绘大飞机今日启航:万米高空传播中国古代文化