像素是图像中的最小单位,有些图像处理任务需要对图像像素值的直接操作,对Opencv中相关常用函数通过Python实现,此外,涉及一个很重要的数值计算扩展Numpy,比Python自身的嵌套列表结构要高效的多。
颜色空间转换
import cv2 as cv
image= cv.imread("image.PNG")
hsv= cv.cvtColor(image, cv.COLOR_BGR2HSV)
cv.imshow("hsv", hsv)
cv.waitKey(0)
函数:cvtColor()中参数1为图像名称,参数2为颜色空间的类型,有以下几种类型:COLOR_BGR2GRAY,COLOR_BGR2HSV,COLOR_BGR2YUV,COLOR_BGR2YCrCb。
图像通道分离与合并
import cv2 as cv
image= cv.imread("image.PNG")
b, g, r = cv.split(image) #图像三通道分离
image = cv.merge([b, g, r]) #图像三通道合并
加,减,乘,除
import cv2 as cv
image1= cv.imread("image1.PNG")
image2= cv.imread("image2.PNG")
I1= cv.add(image1, image2) #加运算
I2= cv.subtract(image1, image2) #减运算
I3= cv.multiply(image1, image2) #乘运算
I4= cv.divide(image1, image2) #除运算
逻辑运算
import cv2 as cv
image1= cv.imread("image1.PNG")
image2= cv.imread("image2.PNG")
image_and= cv.bitwise_and(image1, image2) #与运算
image_or= cv.bitwise_or(image1, image2) #或运算
image_not= cv.bitwise_not(image1) #非运算
特殊操作
除了常用的运算,根据图像处理的需要,可以对像素值进行特殊操作。
import cv2 as cv
import numpy as np
image= cv.imread("image.PNG")
h, w, ch = image.shape
blank = np.zeros([h, w, ch], image.dtype)
image_new = cv.addWeighted(image, para1, blank, para2, para3)
函数:addWeighted()中image:第一个数组,para1:第一个数组元素权重,blank:第二个数组,para2:第二个数组元素权重,para3:数组1与数组2组合参数。