OpenCV中图像处理
一.颜色空间转换
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灰度图像,也可以是矩阵,一般为二值化后的图像