一.顏色空間轉換
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灰度圖像,也可以是矩陣,一般為二值化后的圖像