傳統讀取像素方法
灰度圖像(返回的值即為該位置的像素值): 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