广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解在OpenCV中如何使用图像像素
  • 793
分享到

详解在OpenCV中如何使用图像像素

2024-04-02 19:04:59 793人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录切片操作获取感兴趣区域的坐标值使用切片操作裁剪图像1.加载并显示原始图像2.获取图像的空间维度3.裁剪图像4.使用尺寸将部分图像设置为特定颜色。总结 像素是计算机视觉中图像的重要

像素是计算机视觉中图像的重要属性。它们是表示图像中特定空间中光的颜色强度的数值,是图像中数据的最小单位。

图像中的像素总数是高度、宽度和通道的乘积。

由于OpenCV中的图像被读取为像素值的Numpy数组,因此可以使用数组切片操作获取并处理由该区域的像素表示的图像区域。

切片操作用于检索序列子集,如列表、元组和数组,因此可用于获取图像区域的像素值,以便进行编辑、格式化或裁剪等处理。

切片操作

脚本:使用切片操作获取列表的子集。

# 切片字母列表
letters = ['a', 'b', 'c', 'd', 'e']
 
# 头三个字母
first_three = letters[:3]
 
# 最后三个字母
last_three = letters[-3:]
 
# 得到第二个到第四个字母
second_to_fourth = letters[1:4]
 
# 显示结果
print('First three letters: ', first_three)
print('Last three letters: ', last_three)
print('Second to fourth letters: ', second_to_fourth)

请注意,我使用索引值对字母列表进行切片。例如,传递起始索引1(列表中第二个字母的索引)和4将返回列表的一个片段,从第二个值到第四个值。

由于索引值用于以这种方式检索子集,因此它们也用于定位和检索图像中感兴趣的区域。

以图像中的区域为目标的切片由图像的两个轴(水平(X)和垂直(Y))的起始值和结束值定义,格式如下:

image[startY: endY, startx:endX]

它返回所需感兴趣区域的(图像像素的)Numpy数组。

那么,我们如何确定感兴趣区域的X轴和Y轴的起始值和结束值?

这些值(startX、endX、startY、endY)是映射出感兴趣区域的坐标值。

使用OpenCV显示时,这些值不会显示在图像旁边,但我们可以使用其他应用程序(如Photoshop、Corel Draw、Paint e.t.c)或其他python可视化库(如Matplotlib)来显示具有X和Y坐标值的图像。

一如既往,这在实践中得到了更好的理解。让我们使用matplotlib显示一个图像。pyplot,我们可以从中检索坐标,这些坐标映射出图像中的目标感兴趣区域。

我用加纳共和国国旗的图像来证明这一点。在这里,我的目标是图像中围绕黑星的区域。

获取感兴趣区域的坐标值

使用Matplotlib加载并显示图像

# 导入matplotlib的plot
import matplotlib.pyplot as plt
 
# 加载和显示原始图像
image = plt.imread('Flag_of_Ghana.png')
 
# 显示图片
plt.imshow("Original", image)
plt.plot()

输出:加载的图像及其X和Y坐标。

正如你所看到的,plt.imshow函数返回读取的图像以及x和y轴的坐标值。

然后,我们可以检索感兴趣区域(黑星)的起始和结束坐标值。

追踪黑星区域的坐标值

这幅图像显示了如何追踪黑星周围区域的坐标。

我们可以从图像中检索坐标(startY(y1)、endY(y2)、startX(x1)、endX(x2))。然后,我们可以定义两个轴的起点和终点坐标,并裁剪为:

image[y1: y2, x1:x2]

if we get y1, y2 = [145, 295] and x1, x2 = [245, 400]

那么绘制出黑星的区域将是:

black_star = image[145:295, 245:400]

这将返回映射感兴趣区域(本例中为黑星)的像素值(在Numpy数组中)。

现在,我们可以利用这种技术对图像区域进行定位和切片,以进行各种图像处理。

使用切片操作裁剪图像

1.加载并显示原始图像

# 导入matplotlib的plot
import matplotlib.pyplot as plt
 
# 加载和显示原始图像
image = plt.imread('Flag_of_Ghana.png')
 
# 显示图片
plt.imshow("Original", image)
plt.plot()

输出:显示加载的图像。

2.获取图像的空间维度

# 获取图像的空间尺寸
# 初始化
originY, originX = 0, 0
 
# 获取图像的高度和宽度
height, width = image.shape[:2]
 
# 计算图像的中心
(centerX, centerY) = (width // 2, height // 2)
print('Image height: ', height)
print('Image width: ', width)
print('Center location: ', (centerY, centerX))

输出:显示图像的空间尺寸。

3.裁剪图像

裁剪出图像的左上角

# 裁剪图像的左上角
# 高度从原点到中心
# 宽度从原点到中心
 
top_left = image[originY:centerY, originX:centerX]
cv2.imshow("Top-Left Corner", top_left)
cv2.waiTKEy(0)

输出:图像的左上角

裁剪出图像的右上角

# 裁剪右上角
# 高度从原点到中心
# 宽度从中心到右上角(宽度)
 
top_right = image[originY:centerY, centerX:width]
cv2.imshow("Top-Right Corner", top_right)
cv2.waitKey(0)

输出:图像的右上角

裁剪出图像的左下角

# 裁剪左下角
# 高度从中心到左下角(高度)
# 宽度从中心到右上角(宽度)
 
bottom_left = image[centerY:height, originX:centerX]
cv2.imshow("Bottom-Left Corner", bottom_left)
cv2.waitKey(0)

输出:图像的左下角

裁剪出图像的右下角

# 裁剪右下角
# 高度从中心到左下角(高度)
# 宽度从中心到右上角(宽度)
 
bottom_right = image[centerY:height, centerX:width]
cv2.imshow("Bottom-Right Corner", bottom_right)
cv2.waitKey(0)

输出:左下角。

4.使用尺寸将部分图像设置为特定颜色。

# 设置原始图像的左上角为绿色
image[originY:centerY, originX:centerX] = (0, 255, 0)
 
# 显示更新后的图像
cv2.imshow("Updated", image)
cv2.waitKey(0)

输出:将左上角设置为绿色

总结

图像像素是表示图像中颜色强度的数值。使用OpenCV获取和设置不同图像处理的图像像素的过程基于Numpy阵列的切片操作。切片像素值在裁剪、重置、复制或增强图像时非常有用。

以上就是详解在OpenCV中如何使用图像像素的详细内容,更多关于OpenCV图像像素的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解在OpenCV中如何使用图像像素

本文链接: https://www.lsjlt.com/news/141204.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解在OpenCV中如何使用图像像素
    目录切片操作获取感兴趣区域的坐标值使用切片操作裁剪图像1.加载并显示原始图像2.获取图像的空间维度3.裁剪图像4.使用尺寸将部分图像设置为特定颜色。总结 像素是计算机视觉中图像的重要...
    99+
    2022-11-13
  • OpenCV中怎么使用图像像素
    这篇文章主要介绍了OpenCV中怎么使用图像像素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇OpenCV中怎么使用图像像素文章都会有所收获,下面我们一起来看看吧。像素是计算机视觉中图像的重要属性。它们是表示图...
    99+
    2023-06-29
  • 详解如何使用OpenCV和像素处理图像灰度化
    目录数字图像处理图像读入和通道结构像素级灰度化处理不同算法之间的效果比较图像灰度化的输出和显示数字图像处理 在数字图像处理中,我们经常需要将彩色图像转换为灰度图像,以便应用各种算法。...
    99+
    2023-05-17
    OpenCV 像素图像灰度化 OpenCV 图像处理
  • C++ OpenCV中如何进行图像像素值统计
    小编今天带大家了解C++ OpenCV中如何进行图像像素值统计,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“C++&nbs...
    99+
    2023-06-28
  • OpenCV 读取图像imread的使用详解
    目录1、方法说明2、目前支持的文件格式3、flags参数说明4、案例教程1、方法说明 import cv2 as cv img1 =cv.imread(filename[, flag...
    99+
    2022-11-11
  • 详解在OpenCV中实现的图像标注技术
    目录目录图像注解对图片注释的需求图像注解的类型分类法物体检测语义分割用OpenCV实现图像注解包围盒方法KNN方法进行分割结论参考文献图像标注在计算机视觉中很重要,计算机视觉是一种技...
    99+
    2022-11-11
  • Opencv图像处理中如何使用mask
    这篇文章将为大家详细讲解有关Opencv图像处理中如何使用mask,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图像基本运算图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、...
    99+
    2023-06-14
  • 如何使用OpenCV实现图像增强
    本篇内容介绍了“如何使用OpenCV实现图像增强”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本期将介绍如何通过图像处理从低分辨率/模糊/低...
    99+
    2023-06-20
  • 怎么在python中使用OpenCV在图像中添加文本
    怎么在python中使用OpenCV在图像中添加文本?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python的数据类型有哪些python的数据类型:1. 数字类型,包括int...
    99+
    2023-06-14
  • 如何利用Python和OpenCV对图像进行加水印详解
    目录前言🌌 第 1 步:导入 OpenCV 并读取logo和要应用水印的图像💨 第 2步:计算两个图像的高度和宽度🚀 第 3 步:将水...
    99+
    2022-11-12
  • Python如何获取图像中像素点坐标
    这篇“Python如何获取图像中像素点坐标”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何获取图像中像素点坐标...
    99+
    2023-06-30
  • 如何在Python中使用OpenCV实现图像平滑处理操作
    这期内容当中小编将会给大家带来有关如何在Python中使用OpenCV实现图像平滑处理操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是图像平滑处理在尽量保留图像原有信息的情况下,过滤掉图像内部的噪...
    99+
    2023-06-15
  • C++ opencv图像平滑滤波器如何使用
    这篇文章主要介绍“C++ opencv图像平滑滤波器如何使用”,在日常操作中,相信很多人在C++ opencv图像平滑滤波器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++&n...
    99+
    2023-06-30
  • 如何利用Opencv实现图像的加密解密
    目录1、基础:基于异或操作实现图像加密解密Opencv-python代码实现效果展示:2、进阶:基于混沌序列构成异或模板实现图像加密解密结果展示:总结1、基础:基于异或操作实现图像加...
    99+
    2022-11-12
  • 怎么在Python中使用OpenCV标记图像区域轮廓
    这期内容当中小编将会给大家带来有关怎么在Python中使用OpenCV标记图像区域轮廓,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。图片基本处理import cv2 as c...
    99+
    2023-06-09
  • 详解如何使用Python隐藏图像中的数据
    目录编码例子解码程序执行局限性参考 隐写术是在任何文件中隐藏秘密数据的艺术。 秘密数据可以是任何格式的数据,如文本甚至文件。简而言之,隐写术的主要目的是隐藏任何文件(通常是图像、音频...
    99+
    2022-11-13
  • Python+OpenCV如何实现在图像上绘制矩形
    小编给大家分享一下Python+OpenCV如何实现在图像上绘制矩形,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!代码import copyimport cv2import numpy&nbs...
    99+
    2023-06-29
  • CSS怎么使用像素来在页面上定位背景图像
    这篇文章主要为大家展示了“CSS怎么使用像素来在页面上定位背景图像”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS怎么使用像素来在页面上定位背景图像”这篇文...
    99+
    2022-10-19
  • OpenCV中常用图像几何变换有哪些
    这篇文章主要为大家展示了“OpenCV中常用图像几何变换有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“OpenCV中常用图像几何变换有哪些”这篇文章吧。0 程序环境与所学函数本章程序运行需...
    99+
    2023-06-22
  • 如何使用Python的OpenCV库处理图像和视频
    目录介绍计算机视觉OpenCV应用:安装使用 OpenCV 处理图像1. 从文件中读取图像2. 调整图像大小:3. 旋转图像4. 翻转图像:5. 重写图像6. 裁剪图像7. 绘制形状...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作