opencv的图像操作

Photoelectric 2021-04-25

栏目: 精品阅读 ·

来源: Photoelectric

简介  这篇文章主要介绍了opencv的图像操作以及相关的经验技巧,文章约5494字,浏览量154,点赞数7,值得推荐!

 访问和修改像素值

OpenCV的图像是numpy.ndarray类型的多维数组,其中包含字节值

对于一个BGR图像,可以使用数组的方式去访问这些值,例如image[0,0,0]

第一个值表示y坐标(行),第二个值表示x坐标(列),第三个值表示颜色通道

 访问像素值

import cv2
import numpy as np

if __name__ == '__main__':
   img = cv2.imread('6.png')
   px = img[100,100]
   print(px) #返回[106 102 104]对应BRR
   grayimg = cv2.imread('gray.png')
   px = grayimg[100,100,0] #灰度值只显示亮度
   print(px)


 修改像素值

1
2
3
>>> img[100,100] = [255,255,255]
>>> print img[100,100]
[255 255 255]

PS:对于单个像素值访问和修改,更好的方法是使用array.item() 和 array.itemset()

1
2
3
img = cv2.imread('6.png')
print(img.item(100,100,0)) #访问100,100像素的blue值,若需要B,G,R的全部数据则需要分别调用img.item
img.itemset((100,100,0),100) #修改像素值

 访问图像属性

1
2
3
4
5
6
img = cv2.imread('6.png')
print(img.shape) #(883, 1572, 3)
grayimg = cv2.imread('6.png',0)
print(grayimg.shape) #(883, 1572) 灰度图只返回行数和列数
print(img.size) #4164228 总像素数
print(img.dtype) #uint8 图像数据类型

 选定范围

1
img[100:200, 100:500] #100行到200行,100列到500列的像素范围

 分割和合并图像通道

b,g,r = cv2.split(img) #需要时间很多,应尽可能使用Numpy进行索引
img = cv2.merge((b,g,r))
#or b = img[:,:,0]
img[:,:,2] = 0 #让所有红色像素等于0


 注,本篇为转载文章,原作者为Clicker

 原文链接   http://nonexistent.tech/2018/05/14/opencv的图像操作/


以上就是本文的全部内容,希望对大家的学习有所帮助,本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

相关文章

Opencv-图像操作与处理入门基本知识(一)

Opencv-图像操作与处理入门基本知识(一)

Opencv图像基础操作

【OpenCV】高手勿入! 半小时学会基本操作 图像基础操作

opencv学习-入门系列汇总

opencv:图像的算术操作

【OpenCV】高手勿入! 半小时学会基本操作 图像裁剪融合

openCV (一) 图像的基本操作 学习回顾记录