一、按照多维数组访问

同python中numpy的ndarray访问元素一样:img[a,b,c]

  1. 灰度图(单通道)
    img[i,j]  ###i = 行, j = 列

     

  2. 彩色图像:Opencv下为BGR,0,1,2表示通道数

    img[j,i,0]= 255
    img[j,i,1]= 255
    img[j,i,2]= 255
    

     

二、使用Opencv自带的函数

cv2.GetCol(img, 0): 返回第一列的像素

cv2.GetCols(img, 0, 10): 返回前 10 列

cv2.GetRow(img, 0): 返回第一行

cv2.GetRows(img, 0, 10): 返回前 10 行

建议使用第一种方法,用的多

三、代码示例

常见的椒盐现象:(还存在BGR与RGB的问题)

import cv2
import numpy as np
import matplotlib.pyplot as plt
def salt(img, n):
    for k in range(n):
        i = int(np.random.random() * img.shape[0]);
        j = int(np.random.random() * img.shape[1]);
        if img.ndim == 2:
            img[i,j] = 255
        elif img.ndim == 3:
            img[i,j,0]= 255
            img[i,j,1]= 255
            img[i,j,2]= 255
    return img
if __name__ == '__main__':
   img = cv2.imread("scene.jpg")
   saltImage = salt(img, 500)
   plt.imshow(saltImage)
   plt.show()
   #cv2.imshow("Salt", saltImage)
   #cv2.waitKey(0)
   #cv2.destroyAllWindows()

 

Opencv-Python的图像像素访问
图1 椒盐现象

 

相关文章: