OpenCV坐标系统与图像处理案例

embedded/2024/10/25 14:20:51/

图像处理中,理解图像的坐标系统是至关重要的。OpenCV,作为一个强大的计算机视觉库,提供了丰富的功能来操作图像。本文将介绍OpenCV中的坐标系统,并提供一个简单的案例来展示如何使用这些坐标来修改图像的特定区域。

OpenCV坐标系统

在OpenCV中,图像通常以NumPy数组的形式表示,其中每个元素对应于图像中的一个像素。数组的索引方式如下:

  • 第一个索引表示行(y坐标)。
  • 第二个索引表示列(x坐标)。
  • 第三个索引表示颜色通道(对于彩色图像)。

对于BGR格式的图像(OpenCV默认使用BGR而不是RGB),颜色通道的顺序是:

  • 第0个通道是蓝色(B)。
  • 第1个通道是绿色(G)。
  • 第2个通道是红色(R)。

案例:修改图像的特定区域

以下是一个使用Python和OpenCV修改图像特定区域颜色的案例。我们将通过改变图像中不同区域的颜色来展示如何使用坐标系统。

import cv2# 读取图像
img = cv2.imread("lenacolor.png")# 显示原始图像
cv2.imshow("before", img)# 打印图像中不同位置的像素值
print("访问img[0,0]=", img[0,0])
print("访问img[0,0,0]=", img[0,0,0])
print("访问img[0,0,1]=", img[0,0,1])
print("访问img[0,0,2]=", img[0,0,2])# 修改图像的特定区域
# 区域1: 白色
img[0:50, 0:100, 0:3] = 255
# 区域2: 灰色
img[50:100, 0:100, 0:3] = 128
# 区域3: 黑色
img[100:150, 0:100, 0:3] = 0
# 区域4: 红色
img[150:200, 0:100] = (0, 0, 255)# 显示修改后的图像
cv2.imshow("after", img)# 打印修改后的像素值
print("修改后img[0,0]=", img[0,0])
print("修改后img[0,0,0]=", img[0,0,0])
print("修改后img[0,0,1]=", img[0,0,1])
print("修改后img[0,0,2]=", img[0,0,2])# 等待按键
cv2.waitKey()
# 关闭所有窗口
cv2.destroyAllWindows()

代码解释

  1. 读取图像:使用cv2.imread函数读取名为"lenacolor.png"的图像文件。
  2. 显示原始图像:使用cv2.imshow函数显示原始图像。
  3. 打印像素值:使用索引访问图像的特定像素,并打印其BGR值。
  4. 修改图像区域
    • 将左上角50x100像素的区域设置为白色。
    • 将紧邻其下的50x100像素的区域设置为灰色。
    • 将再下的50x100像素的区域设置为黑色。
    • 将右下角50x100像素的区域设置为红色。
  5. 显示修改后的图像:再次使用cv2.imshow显示修改后的图像。
  6. 打印修改后的像素值:打印修改后特定位置的像素值。
  7. 等待按键:使用cv2.waitKey等待用户按键。
  8. 关闭窗口:使用cv2.destroyAllWindows关闭所有OpenCV创建的窗口。
    在这里插入图片描述
    在这里插入图片描述

通过这个案例,我们可以看到如何使用OpenCV的坐标系统来访问和修改图像的特定区域。这种技术在图像编辑、图像分析和计算机视觉应用中非常有用。


http://www.ppmy.cn/embedded/132352.html

相关文章

.NET 9 - 尝试一下Open Api 的一些变化

1.简单介绍 .NET 9 中 OpenAPI 也有一些变化,这边也简单体验一下.NET 9 中的OpenAPI的变化,具体的话,可以参考如下文章,谢谢 .NET 9 OpenAPI 2. .NET 8的OpenAPI 这边以Visual Studio 2022中的ASP.NET Core Minimal API模板来…

Ubuntu18.04(wsl)编译ceres-2.0.0版本

一、概述 由于需要在图优化过程中使用ceres库来作为优化的工具,需要使用到2.0.0版本的ceres库,在编译过程中遇到一些问题,这里将其记录下面。 二、具体操作过程 (一)概述 使用的系统版本是wsl-Ubuntu18.04版本&#…

VantUI

官网:Vant 4 - A lightweight, customizable Vue UI library for mobile web apps. Vant组件库: 基础组件 按钮、图标、布局、提示信息等 表单组件 日历、复选框、时间选择、输入框、评分等 反馈组件 弹出框、加载、下拉菜单、消息提示、下拉刷新、滚动…

ubuntu 用 ss-tproxy的内置 DNS 前挂上 AdGuardHome,AdGuardHome实现的DHCP和DNS 去广告

目的: 使用 AdGuardHome 可以方便的查看 dns 日志、block 不想要的域名、以及广告过滤。 AdGuardHome 的配置和用法就不介绍了,这里只说下如何接入 ss-tproxy,挂到 chinadns-ng 前面: # 让 AdGuardHome 监听 53 端口 dns_mainp…

ESP32 ESP-IDF开发环境配置

目录 这里只列出了WIndows和Ubuntu下的环境配置教程。 一、配置ESP32开发环境 Ubuntu开发环境(个人原因无法调试,其他正常) 配置开发环境 WIndows开发环境 vscodeESP-IDF CLionESP-IDF 一、配置ESP32开发环境 配置开发环境挺麻烦的&…

flashback database 闪回数据库

1.修改闪回区大小,路径,保留时间 SQL> show parameter db_recovery_file_dest SQL> show parameter db_flashback_retention_targetSQL> alter system set db_recovery_file_dest_size20G scopeboth;System altered.SQL> alter system set …

深入计算机语言之C++:类与对象(中)

🔑🔑博客主页:阿客不是客 🍓🍓系列专栏:从C语言到C语言的渐深学习 欢迎来到泊舟小课堂 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 一、默认成员函数 如果一个类中什么成员都没有&…

跨平台 OTT 项目使用 Google Analytics 替代 KPI log

关于 Google Analytics https://developers.google.com/analytics/devguides/collection/ga4?hlzh-cn Google Analytics 是一款分析服务,可帮助您衡量各种平台上的流量和互动情况, 例如网站和应用利用 Google Analytics,您可以优化您的广告…