Opencv-Python的图像像素访问

 

一、按照多维数组访问

同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

3.numpy中的矩阵访问方法(建议使用)

array.item()和array.itemset函数:

import cv2
import numpy as np
img=cv2.imread('/home/duan/workspace/opencv/images/roi.jpg')
print img.item(10,10,2)
img.itemset((10,10,2),100)
print img.item(10,10,2)
## 50
## 100

二、使用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()

 

图1 椒盐现象

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值