(Python)从零开始,简单快速学机器仿人视觉Opencv—第六节:OpenCV图像的一些基本操作

170
0
2020年12月19日 09时06分

提前准备

 

使用工具Python3.5
使用包cv2,numpy

 

任务1 获取并修改像素值

 

读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值

 

import cv2
import numpy
img = cv2.imread('45.jpg')
px=img[100,100]
print(px)
blue = img[100,100,0]
print(blue)
img[101,101]=[255,255,255]
print(img[101,101])

 

numpy是经过优化了的进行快速矩阵运算的包,所以不推荐逐个获取像素值并修改能矩阵运算就不要用循环。
例如前5行的后3列,用numpy的array.item()和array.itemset()会更好。但是返回是标量,如果想获得所有RGB的值,需要使用array.item()分割他们。
更好的方法是

 

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.item(10,10,2))
img.itemset((10,10,2),100)
print(img.item(10,10,2))

 

任务2 获取图像属性

 

图像属性包括:行,列,通道,图像数据类型,像素数目等

 

 成员1:
 img.shape 调用这个成员可以获得图像的形状,返回值是一个包含行数,列数,通道数的元组

 

实例代码:

 

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.shape)

 

如果图像是灰度图,返回值仅有行数和列数,所以通过检查返回值可以判断是灰度图还是彩色图

 

成员2:
img.size 可以返回图像的像素数目

 

实例代码:

 

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.size)

 

像素的数目=行数 x 列数 x 通道数

 

成员3
img.dtype返回图像的数据类型,在debug时很重要,因为OpenCV-Python代码中经常出现数据类型的不一致

 

实例代码:

 

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.dtype)

 

总结

(本系列每周不定期更新,谢谢大家支持!)

发表评论

后才能评论