OpenCV學習第二課——對感興趣區域進行分割(ROI)


1、圖像ROI

import cv2 import numpy as np # 讀入圖片 # a = cv2.imread("E:\\image\\lenacolor.png") # cv2.imshow("original",a) # cv2.waitKey() # cv2.destroyAllWindows()

# 將一個圖像的ROI(感興趣區域)移到另一個圖片中去
a = cv2.imread("E:\\image\\lenacolor.png")  # 圖像A
 c = cv2.imread("E:\\image\\p1.jpg")  # 圖像C
print(a.shape)  # (512, 512, 3) 整個圖像是 512*512 ,從而大致判斷你想要的區域位置
b = np.ones((101, 101, 3))  # 創建 一個ROI區域
 b = a[220:400, 250:360]  # 根據整個圖像是由 512*512 大小 裁剪出來了ROI(臉部) # a[0:180, 0:110] = b

# c[0:180, 0:110] = b # 講裁剪出來的臉部 放在圖像C的0-180行,0-110列的位置
c[0:180, 0:110] = b # cv2.imshow("original", a)
cv2.imshow("original1", c) # 顯示C # cv2.imshow("face", b)
cv2.waitKey() cv2.destroyAllWindows()

2、通道的拆分與合並

import cv2 import numpy as np # 通過分離BGR,合並成原來的圖片 # a = cv2.imread("E:\\image\\lenacolor.png") # # b, g, r = cv2.split(a) # 講圖片拆分,所有彩色圖片都是BGR合成的 # # cv2.imshow("original", a) # # cv2.imshow("B", b) # cv2.imshow("G", g) # cv2.imshow("R", r) # # m = cv2.merge([b, g, r]) # merge 合並通道 # # cv2.imshow("merge", m) # 顯示通道 # cv2.waitKey() # # cv2.destroyAllWindows()


# 通過逐個分離BGR,合成只含B或G或R的圖片
a = cv2.imread("E:\\image\\lenacolor.png") row, cols, chn = a.shape  # 獲得圖像a的行列通道數 # 提取b,G,R為0
b = cv2.split(a)[0] # split 提取特定的通道
g = np.zeros((row, cols), a.dtype) r = np.zeros((row, cols), a.dtype) cv2.imshow("original", a) m = cv2.merge([b, g, r])  # merge 合並通道,行程BGR圖像
 cv2.imshow("merge", m)  # 顯示通道
cv2.waitKey() cv2.destroyAllWindows()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM