二值影像通常是經過處理后得到的,使用0表示黑色,使用255表示白色,
import cv2
import numpy as np
# ————————————————————案例一————————————————————
'''
使用numpy庫生成一個80*80的陣列用來模擬一個黑色影像,并對其進行簡單處理
'''
# np.zeros()可以生成一個元素值都是0的陣列
img = np.zeros((80, 80), dtype=np.uint8)
cv2.imshow('black', img)
cv2.waitKey()
# 修改其中一個像素點的值并顯示圖片后觀察其變化
print('讀取像素點,img[0,3]', img[0, 3])
img[0, 3] = 255
print('修改后的像素點,img[0,3]', img[0, 3])
cv2.imshow('new', img)
cv2.waitKey()
# 銷毀所有影像視窗
cv2.destroyAllWindows()
# ————————————————————案例二————————————————————
'''讀取一個灰度影像,并對其像素進行訪問、修改'''
file_path = '/Users/guojun/Desktop/cute.jpeg'
cute = cv2.imread(file_path, 0)
cv2.imshow('before', cute)
# pycharm運行時如不能顯示圖片,則需要加上等待鍵盤輸入cv2.waitKey()方法
cv2.waitKey()
for i in range(10, 100):
for j in range(10, 100):
cute[i, j] = 255
# 修改后的效果展示
cv2.imshow('after',cute)
cv2.waitKey()
# 銷毀所有影像視窗
cv2.destroyAllWindows()
# ————————————————————案例三————————————————————
'''生成一個三位陣列,用來模擬一副BGR模式的彩色影像,對其進行訪問、修改'''
img = np.zeros((20, 40, 30), dtype=np.uint8)
print(img)
print('img[0,3]:', img[0, 3])
img[0, 3] = 255
img[1, 5] = 333
img[1, 1, 1] = 6
img[1, 2, 2] = 4
img[0, 2, 0] = 5
print('after img[0,3] :', img[0, 3])
print('after img[0,2,0]:', img[0, 2, 0])
# ————————————————————案例四————————————————————
'''讀取一副彩色影像,并對其像素進行訪問、修改'''
file_path = '/Users/guojun/Desktop/cute.jpeg'
img = cv2.imread(file_path)
cv2.imshow('before', img)
cv2.waitKey(0)
print('訪問img[0,0]=', img[0, 0])
print('訪問img[0,0,0]=', img[0, 0, 0])
print('訪問img[0,0,1]=', img[0, 0, 1])
print('訪問img[0,0,2]=', img[0, 0, 2])
print('訪問img[50,0]=', img[50, 0])
print('訪問img[100,0]=', img[100, 0])
# 區域1
for i in range(0, 50):
for j in range(0, 100):
for k in range(0, 3):
img[i, j, k] = 255 # 白色
# 區域2
for i in range(50, 100):
for j in range(0, 100):
img[i, j] = [128, 128, 128] # 灰色
# 區域3
for i in range(100, 150):
for j in range(0, 100):
img[i, j] = 0 # 黑色
cv2.imshow('after', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# ————————————————————案例五————————————————————
'''使用Numpy生成一個二維隨機陣列,用來模擬一副灰度影像,并對其像素值進行訪問、修改'''
img = np.random.randint(10, 99, size=[5, 5], dtype=np.uint8)
print('img=', img)
print('讀取像素點img.item(3,2)=', img.item(3, 2))
img.itemset((3, 2), 255)
print('修改后img =', img)
print('修改后像素點img.item(3,2)=', img.item(3, 2))
# ————————————————————案例六————————————————————
'''使用Numpy生成一個灰色影像,讓其中的像素值均為亂數'''
img = np.random.randint(0, 256, size=[256, 256], dtype=np.uint8)
cv2.imshow('window', img)
cv2.waitKey()
cv2.destroyAllWindows()
# ————————————————————案例七————————————————————
'''讀取一幅灰度影像,并對其像素值進行訪問、修改'''
file_path = '/Users/guojun/Desktop/cute.jpeg'
img = cv2.imread(file_path, 0)
# 測驗讀取,修改單個像素值
print('讀取像素點img.item(3,2)=', img.item(3, 2))
img.itemset((3, 2), 255)
print('修改后像素點img.item(3,2)=', img.item(3, 2))
# 測驗修改一個區域的像素值
for i in range(100, 200):
for j in range(0, 100):
img.itemset((i, j), 255)
cv2.imshow('after', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# ————————————————————案例八————————————————————
'''使用Numpy生成一個二維隨機陣列,用來模擬一副彩色影像,使用函式item()、itemset()并對其像素值進行訪問、修改'''
img = np.random.randint(10, 99, size=[2, 4, 3], dtype=np.uint8)
print(img)
print('讀取像素點img[1,2,0]=', img.item(1, 2, 0))
print('讀取像素點img[0,2,1]=', img.item(0, 2, 1))
print('讀取像素點img[1,0,2]=', img.item(1, 0, 2))
img.itemset((1, 2, 0), 255)
img.itemset((0, 2, 1), 255)
img.itemset((1, 0, 2), 255)
print('after', img)
print('after 讀取像素點img[1,2,0]=', img.item(1, 2, 0))
print('after 讀取像素點img[0,2,1]=', img.item(0, 2, 1))
print('after 讀取像素點img[1,0,2]=', img.item(1, 0, 2))
# ————————————————————案例九————————————————————
'''使用Numpy生成一幅彩色影像,讓其中的像素值均為亂數'''
img = np.random.randint(0, 256, size=[256, 256, 3], dtype=np.uint8)
cv2.imshow('demo', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# ————————————————————案例十————————————————————
'''讀取一副彩色影像,使用函式item()、itemset()并對其像素值進行訪問、修改'''
file_path = '/Users/guojun/Desktop/cute.jpeg'
img = cv2.imread(file_path)
for i in range(0, 100):
for j in range(0, 100):
for k in range(0, 3):
img.itemset((i, j, k), 255)
cv2.imshow('demo', img)
cv2.waitKey()
cv2.destroyAllWindows()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292284.html
標籤:其他
上一篇:【ChatBot】走進聊天機器人
