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

Computer VIsion1

图像的组成原理

什么是Image

Definiton: a visible impression obtained by a camera, telescope, microscope, or other device, or displayed on a computer or video screen

Binary Images

通过二进制组成的图像,每个像素点用0或1组成

在这里插入图片描述

Color Space

看作为三层(channel)的叠加——红、绿、蓝(rgb

在这里插入图片描述

  • Black:(0,0,0)
  • White:(255,255,255)
HSL and HSV

在这里插入图片描述

OpenCV的基本使用

图像读取

OpenCV默认以BGR的形式进行读取数据,因此在绘制读取的图像时,要进行通道的转化

img = cv2.imread('pic1.jpg')  ## BGR顺序
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  ## 转化为RGB
plt.imshow(img)
plt.show()

在这里插入图片描述

可以看到,打印img的维度时,显示的是三个通道

print(type(img))
print(img.shape)

在这里插入图片描述

转化为灰色图像

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(img_gray, cmap='gray')

在这里插入图片描述

此时,再次将灰色图像的维度进行打印,则只有一个通道

print(img_gray.shape)

在这里插入图片描述

转化为HSV和HLS格式

## 转化为hsv和hsl
img_hsv= cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
img_hls = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,20))
ax1.imshow(img_hsv)
ax2.imshow(img_hls)
plt.show()

在这里插入图片描述

思考——转化为不同的图像格式有什么意义

对于某些任务,可能对特定的颜色的识别更敏感

例如:车道轨迹检测,对白色的车道线非常敏感

而不同的图像色彩格式,对不同的颜色的突出不同,因此要根据人物的需求对图像进行相应的转化

绘制

矩形的绘制
## 画矩形
# pt1--坐标1  pt2--坐标2  color--颜色   thickness--线条宽度
cv2.rectangle(img_rgb, pt1=(400, 100), pt2=(300, 200), color=(255,0,0), thickness=5)
plt.imshow(img_rgb)

在这里插入图片描述

圆形的绘制
### 画圆圈
# center--圆形原点   radius--半径
cv2.circle(img_rgb, center=(500, 500), radius=50, color=(0, 0, 255), thickness=5)
plt.imshow(img_rgb)

在这里插入图片描述

添加文本
### 增加文本
# text--文本内容   org--文本开始的坐标  fontFace--字体  fontScale--字体大小
cv2.putText(img_rgb, text="Nan Jing", org=(600, 200), fontFace=cv2.FONT_HERSHEY_DUPLEX, fontScale=2, color=(0, 255, 0), thickness=10)
plt.imshow(img_rgb)

在这里插入图片描述

http://www.dtcms.com/a/109473.html

相关文章:

  • android开发:zxing-android-embedded竖屏扫描功能
  • 四门冷柜、操作台、卧式冰柜区别及运输注意事项
  • 什么是 StarRocks?核心优势与适用场景解析
  • 【深度学习】嘿马深度学习笔记第13篇:卷积神经网络,学习目标【附代码文档】
  • 2025软件供应链安全指南︱构筑企业安全积极防御体系实践
  • U盘实现——BOT 常用命令
  • 无线通信技术(三):5G NR通信频带划分与应用场景
  • Spring Boot后端开发全攻略:核心概念与实战指南
  • python大数据相关职位,还需要学习java哪些知识
  • 股权转让怎么交税?
  • 【动态规划】线性dp——LIS和LCS
  • 网站提示“不安全“怎么办?原因分析与解决方法
  • sqlalchemy详细介绍以及使用方法
  • 防爆对讲机VS非防爆对讲机,如何选择?
  • 将现有 REST API 转换为 MCP Server工具 -higress
  • element-plus中,表单校验的使用
  • HCIP-8 ospf静默接口,ospf树
  • 用Python和Pygame创造粉色粒子爱心:3D渲染的艺术
  • 《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例
  • VTK 各个点颜色的设置
  • 289.将所有数字用字符替换
  • 栈容器的应用
  • 代码随想录|动态规划|17一和零
  • DAY 35 leetcode 202--哈希表.快乐数
  • QT 非空指针 软件奔溃
  • 检索增强生成(RAG) 优化策略
  • LLM架构解析:长短期记忆网络(LSTM)(第三部分)—— 从基础原理到实践应用的深度探索
  • MyBatis:开源、轻量级的数据持久化框架
  • 游戏引擎学习第201天
  • Muduo网络库实现 [九] - EventLoopThread模块