OpenCV中影象處理
阿新 • • 發佈:2019-08-11
一.顏色空間轉換
1.cv2.cvtColor(input_img,flag)
引數1是要轉換的影象
引數2是轉換型別 例如:cv2.COLOR_BGR2HSV (RGB->HSV) cv2.COLOR_BGR2GRAY(RGB->灰度圖),常用
import cv2 import numpy as np img = cv2.imread('timg5.jpg') img1 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img2 = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) cv2.namedWindow('img',cv2.WINDOW_NORMAL) cv2.namedWindow('Gray',cv2.WINDOW_NORMAL) cv2.namedWindow('hsv',cv2.WINDOW_NORMAL) cv2.imshow("img",img) cv2.imshow('Gray',img1) cv2.imshow('hsv',img2) cv2.waitKey(0)
效果圖:
原圖 灰度圖 HSV圖
2.cv2.inRange(src, lowerb, upperb, dst=None) 二值化
src:輸入原圖,可以為單通道灰度影象,也可以為3通道彩色影象
lowerb:畫素值區間下限
upperb:畫素值區間上限
說明:單通道灰度影象,畫素值低於lowerb和高於upperb的部分變成0,lower_red~upper_red之間的值變成255;三通道彩色影象,則每個通道分別與lowerb、upperb比較,然後按照相同辦法修改畫素值
import cv2 import numpy as np img = cv2.imread('timg5.jpg') img2 = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) cv2.namedWindow('hsv',cv2.WINDOW_NORMAL) cv2.namedWindow('hsv1',cv2.WINDOW_NORMAL) cv2.namedWindow('hsv2',cv2.WINDOW_NORMAL) lower_blue = np.array([90, 50, 50]) upper_blue = np.array([130, 255, 255]) mask = cv2.inRange(img2, lower_blue, upper_blue)#二值化 res = cv2.bitwise_and(img2, img2, mask=mask) #按位與 cv2.imshow('hsv',img2) cv2.imshow('hsv1',mask) cv2.imshow('hsv2',res) cv2.waitKey(0)
3.cv2.bitwise_and(src1, src2, dst=None, mask=None)
呼叫時若無mask引數則返回src1 & src2,若存在mask引數,則返回src1 & src2 & mask
src1:輸入原圖1
src2:輸入原圖2,src1與src2可以相同也可以不相同,可以是灰度影象也可以是彩色圖
dst:若存在引數時:src1 & src2 或者 src1 & src2 & mask
mask:可以是單通道8bit灰度影象,也可以是矩陣,一般為二值化後的影象
&nbs