我朋友給了我一些圖片,想讓我幫他加上圖例。最開始我的思路是先對其中的一個有標尺的圖像做閾值處理,清楚掉圖像其它信息,只留下標尺。並以這個圖像做模板,把它添加到其它沒有標尺的圖像中。我的操作如下:
import cv2 mask = cv2.imread('maskk.jpg')#讀入掩碼圖像 image = cv2.imread('process/Z0-1 400-4.jpg') image = cv2.add(image, mask) cv2.imwrite('Z0-1 400-4.jpg',image) #保存圖像
其中maskk掩碼圖像是通過畫圖軟件,去掉標尺以外的圖像信息,也可以使用語句生成掩碼圖像:mask[mask <220] = 0 (將maskk中像素值低於220的所有像素重新賦值為0,這個有點類似於閾值分割)。需要說明的一點是:
image = cv2.add(image, mask)
該語句將圖像image與掩碼圖像像素值對應相加,因為標尺是白色,背景是黑色,這樣相加后mask圖像中的標尺會出現在image中,而圖像中其它位置信息不會受到干擾。
在Python中還有一種圖像疊加方式:image = image + mask。這種形式相加時如果對應像素值之和大於255則會出現溢出現象,如像素值之和為 260,最終得到的像素值為4,其運算過程為260 % 256 = 4。