文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

OpenCV中怎么使用图像像素

2023-06-29 08:39

关注

这篇文章主要介绍了OpenCV中怎么使用图像像素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇OpenCV中怎么使用图像像素文章都会有所收获,下面我们一起来看看吧。

OpenCV中怎么使用图像像素

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

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

由于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)

OpenCV中怎么使用图像像素

请注意,我使用索引值对字母列表进行切片。例如,传递起始索引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的plotimport matplotlib.pyplot as plt # 加载和显示原始图像image = plt.imread('Flag_of_Ghana.png') # 显示图片plt.imshow("Original", image)plt.plot()

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

OpenCV中怎么使用图像像素

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

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

追踪黑星区域的坐标值

OpenCV中怎么使用图像像素

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

我们可以从图像中检索坐标(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的plotimport matplotlib.pyplot as plt # 加载和显示原始图像image = plt.imread('Flag_of_Ghana.png') # 显示图片plt.imshow("Original", image)plt.plot()

输出:显示加载的图像。

OpenCV中怎么使用图像像素

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))

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

OpenCV中怎么使用图像像素

3.裁剪图像

裁剪出图像的左上角

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

输出:图像的左上角

OpenCV中怎么使用图像像素

裁剪出图像的右上角

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

输出:图像的右上角

OpenCV中怎么使用图像像素

裁剪出图像的左下角

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

输出:图像的左下角

OpenCV中怎么使用图像像素

裁剪出图像的右下角

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

输出:左下角。

OpenCV中怎么使用图像像素

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

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

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

OpenCV中怎么使用图像像素

关于“OpenCV中怎么使用图像像素”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“OpenCV中怎么使用图像像素”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯