提前准备

  使用工具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)
 

总结

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