家居網(wǎng)站建設(shè)全網(wǎng)營銷微信營銷軟件免費(fèi)版
這段代碼涉及了以下幾個關(guān)鍵步驟,主要用于圖像的顏色提取、替換以及區(qū)域修改。下面是對代碼的詳細(xì)解析:
1. 導(dǎo)入庫
import cv2
import matplotlib.pyplot as plt
import numpy as np
cv2
: OpenCV庫,用于圖像處理。matplotlib.pyplot
: 用于繪圖和顯示圖像。numpy
: 用于數(shù)組處理。
2. 讀取并顯示圖像
image = cv2.imread("./lunwen.png")
plt.imshow(image)
cv2.imread()
:讀取指定路徑的圖像。plt.imshow()
:使用 Matplotlib 顯示圖像。
3. 顏色提取與替換
lower_blue = (50, 0, 0)
upper_blue = (150, 255, 255)
mask = cv2.inRange(image, lower_blue, upper_blue)
- 使用
cv2.inRange()
函數(shù)創(chuàng)建一個掩膜,用來提取圖像中藍(lán)色區(qū)域。lower_blue
和upper_blue
定義了藍(lán)色的顏色范圍(在 HSV 顏色空間中)。
image[mask.astype(bool)] = (185, 28, 28)
- 將掩膜中的藍(lán)色區(qū)域的像素值替換為
(185, 28, 28)
(紅色),mask.astype(bool)
將掩膜轉(zhuǎn)換為布爾值數(shù)組。
4. 修改非藍(lán)色區(qū)域
white_mask = cv2.inRange(image, (255, 255, 255), (255, 255, 255))
image[np.logical_and(white_mask == 0, ~mask)] = (78, 124, 15)
- 創(chuàng)建一個白色掩膜,
cv2.inRange()
用來提取圖像中的白色區(qū)域(完全白色的像素)。 - 使用
np.logical_and()
和~mask
,將原圖中非藍(lán)色且非白色區(qū)域的像素值替換為(78, 124, 15)
(綠色)。
5. 保存并顯示圖像
plt.imsave('E:/絕緣子/1/1/實(shí)驗(yàn)圖/絕緣子.png', image)
plt.imshow(image)
plt.axis('off')
- 使用
plt.imsave()
將處理后的圖像保存到指定路徑。 plt.imshow(image)
顯示修改后的圖像。plt.axis('off')
禁用坐標(biāo)軸顯示。
6. 處理標(biāo)注圖像
quyu = cv2.imread("E:/insulator/1/1/picture/lion/label.png")
quyu = quyu.mean(axis=2)
print(quyu)
np.unique(quyu)
- 讀取一個標(biāo)注圖像
label.png
,然后通過mean(axis=2)
將其轉(zhuǎn)換為灰度圖(平均化 RGB 通道)。 - 使用
np.unique()
顯示灰度圖中出現(xiàn)的唯一值。
7. 修改圖像中的特定區(qū)域
image[quyu != 0] = (255, 0, 255)
- 在圖像中,所有標(biāo)注區(qū)域(
quyu != 0
)的像素被替換為紫色(255, 0, 255)
。
8. 保存修改后的圖像
plt.imsave("E:/insulator/1/1/picture/lion/lion.png", image)
plt.imshow(image)
plt.axis('off')
- 保存并顯示修改后的圖像。
總結(jié):
這段代碼實(shí)現(xiàn)了以下功能:
- 提取并替換圖像中的藍(lán)色區(qū)域,將其改為紅色。
- 將非藍(lán)色且非白色區(qū)域修改為綠色。
- 根據(jù)標(biāo)注圖像(
label.png
)中非零的區(qū)域,將對應(yīng)圖像區(qū)域更改為紫色。 - 保存修改后的圖像并進(jìn)行展示。
整個流程包括了基于顏色范圍的圖像區(qū)域提取、顏色替換、區(qū)域修改、以及標(biāo)注圖像的處理,適用于圖像分割和標(biāo)記任務(wù)。