有興趣區域(ROI):
在影像處理過程中,我們可能會對影像的某一個特定區域有興趣,該區域被稱為有興趣區域(Region of Interest,ROI),在設定ROI後,可對該區域進行整體操作。在以下範例中,我們先取出ROI,並設定一個彩色影像,讓其中的像素值均為亂數。
face=img[100:200,100:200] #取出ROI
cv2.imshow("face",face) #取出之ROI
rand = np.random.randint(0,256,(100,100,3)) # 亂數取出(100列,100行)之圖像
img[100:200,100:200] = rand #將該100列100行之影像套入我們取出的ROI內
cv2.imshow("after",img)
cv2.waitKey(0)
可看出我們先將ROI區域取出來,將ROI取名為face(於最右邊之圖片),確定要取出之區域後,再利用亂數製造出相同大小的馬賽克,並用修改像素的方式將該區域取代成馬賽克。
當然也能取出像素並將取出之圖片套入別張圖片內。
需要特別注意的是,cv2.add()有三種型式
cv2.add(影像1,影像2):參與運算的影像大小和類型必須保持一致,假設有兩張圖片要用add但大小不一,可使用resize來使圖片大小相同
cv2.add(數值,影像) 或 cv2.add(影像,數值) :此時會將超過影像飽和值的數值處理為飽和值
先使用resize讓圖片大小相同
img1 = cv2.resize(img1, (400, 400), interpolation=cv2.INTER_CUBIC) #(width, height)
img2 = cv2.resize(img2, (400, 400), interpolation=cv2.INTER_CUBIC) #(width, height)
縮小圖片的話,通常 INTER_AREA 使用效果較佳。
放大圖片的話,通常 INTER_CUBIC 使用效果較佳。
使用add將兩幅圖片相加
res = cv2.add(img1,img2)
可以看出他們成功add起來了。
基本上就是增加權重來讓圖片增加
將img1的權重設成0.8,img2的權重設成0.2,即可讓綠水靈更明顯。
res = cv2.addWeighted(img1,0.8,img2,0.2,0)