[Python图像处理]二 OpenCV借助Numpy库读取和修改像素

传统读取像素方法

  灰度图像(返回的值即为该位置的像素值):  p = img[位置参数]    eg: p  = img[88, 142]

       BGR图像(返回B,G,R的值)

  代码如下:

import cv2

def test():
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    p = img[88, 142]
    print(p)   # [29 32 47]
    # b=p[0] g=p[1] r=p[2]
    print(p[0], p[1], p[2])  # 29 32 47
    # 显示图像
    cv2.imshow("Demo", img)
    key = cv2.waitKey(0)
    # 按退出键时关闭
    if key == 27:
        cv2.destroyWindow("Demo")

test()

传统修改像素方法

  修改单个像素。BGR图像可以通过位置参数直接访问像素值直接进行修改

  代码如下:

def test1():
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    print(img[66, 172])   # [ 44  61 110]
    # 修改单个像素
    img[66, 172, 0] = 255
    img[66, 172, 1] = 255
    img[66, 172, 2] = 255
    print(img[66, 172])   # [255 255 255]
    # 修改像素
    img[66, 172] = [233, 233, 233]
    print(img[66, 172])    # [233 233 233]
test1()

   修改区域像素,通过访问图像数组的位置区域实现区域像素修改

   代码如下:

def test2():
    # 修改区域像素
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    # 修改第10行到200行,第100列到200列区域的像素值
    img[10:200, 100:200] = [255, 255, 0]
    cv2.imshow("Demo", img)
    key = cv2.waitKey(0)
    if key == 27:
        cv2.destroyWindow("Demo")
test2()

Numpy读取像素方法

使用Numpy进行像素读取,调用方式如下 返回值=图像.item(位置参数)

def test3():
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    # blue
    blue = img.item(78, 100, 0)
    # green
    green = img.item(78, 100, 1)
    #red
    red = img.item(78, 100, 2)
    print(blue, green, red)  # 45 65 113
test3()

Numpy修改像素方法

使用Numpy的itemset函数修改像素

图像.itemset((位置), 新值)

ef test4():
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    img.itemset((78, 100, 0), 100)
    img.itemset((78, 100, 1), 100)
    img.itemset((78, 100, 2), 100)
    cv2.imshow("Demo", img)
    if cv2.waitKey(0) == 27:
        cv2.destroyWindow("Demo")
    print(img[78, 100])   # [100 100 100]
test4()

注意点:

img[位置参数]  eg: img[88, 120]

img.item(88, 120, 0|1|2)

imhg.itemset((88, 120, 0|1|2), 新值)

转自: https://blog.csdn.net/Eastmount/category_7912787.html

原文地址:https://www.cnblogs.com/zhouzetian/p/12853502.html