opencv图像的基本操作3
Posted weststar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv图像的基本操作3相关的知识,希望对你有一定的参考价值。
1、获取像素并修改
读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值
1 import cv2 2 import numpy 3 img = cv2.imread(‘1.jpg‘) 4 px = img[100, 100] 5 print(px) #获取图像的(100,100)的3维矩阵 6 Blue = img[100, 100, 0] 7 Gray = img[100, 100, 1] 8 Red = img[100, 100, 2] 9 print(Blue, Gray, Red)#打印三色图的灰度值,默认BGR 10 for i in img[100, 100]:# 遍历矩阵 11 print(i) 12 13 print(img.item(100, 100, 2))#快速获取矩阵值 14 img.itemset((100, 100, 2), 99)#快速修改矩阵值
执行结果:
[254 148 125]
254 148 125
254
148
125
125
2、获取图像的属性
图像属性包括:行,列,通道,图像数据类型,像素数目等
2.1 img.shape可以获得图像的形状,返回值是一个包含行数,列数,通道数的元组
如果图像是灰度图,返回值仅有行数和列数,所以通过检查返回值可以判断是灰度图还是彩色图
1 port cv2 2 import numpy 3 img = cv2.imread(‘1.jpg‘) 4 print(img.shape) 5 img1 = cv2.imread(‘1.jpg‘, 0) 6 print(img1.shape)
执行结果:
(375, 500, 3)
(375, 500)
2.2 img.size可以返回图像的像素数目
1 print(img.size)#img.size可以返回图像的像素数目 2 执行结果:562500
2.3 img.dtype返回图像的数据类型,在debug时很重要,因为OpenCV-Python代码中经常出现数据类型的不一致
1 print(img.dtype) 2 结果: 3 unit8
3.图像ROI对图像的特定区域操作。ROI是使用numpy索引来获得的。
简单的说就是对图像感兴趣的区域,机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域ROI。举个例子来说:有一副图片,图片上有各种动物,但是你只喜欢图片里的狗,那么这个狗所在的区域就是感兴趣的区域(ROI)。
(1) 矩形ROI,直接使用切片,简单粗暴
1 import cv2 2 3 img = cv2.imread("1.jpg") 4 roi = img[50:120, 50:100]# 前面高度截取,后面横向截取 5 cv2.imshow(‘roi‘, roi) 6 cv2.waitKey(0) 7 cv2.destroyAllWindows()
(2)一些常用函数选取感兴趣的区域
numpy.zeros() 用法
1
以上是关于opencv图像的基本操作3的主要内容,如果未能解决你的问题,请参考以下文章