OpenCV學習第二課——對感興趣區域進行分割(ROI)
阿新 • • 發佈:2020-09-10
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()