前提条件
使用工具python3.x
使用库numpy;opencv,
api简介
1.cv.imread(“图片路径”)
用来读取本地图片,函数会返回一个对象
2.cv.imshow(“窗口名字”,b)
建立窗口来显示图片,b为cv.imread函数返回的对象
3.cv.split(src)
分割图像的彩色通道,一般分割为三通道,src为cv.imread函数返回的对象
4.cv.cvtColor(image, cv.COLOR_BGR2GRAY)
图片色彩转换,image为cv.imread函数返回的对象,cv.COLOR_BGR2GRAY是宏定义,表示将图片转换为灰度图像
5.cv.VideoCapture(“MP4文件路径”)
读取本地mp4文件,可以通过循环读取视频的每一帧图像
6.captrue =cv.VideoCapture(“MP4文件路径”)
6.(1)captrue .read()
返回读取每一帧结果
7.cv.inRange(img, lowerb = arr1, upperb = arr2)
实现二值化功能,参数img是cv.imread函数返回的对象,arr1,arr2是一个图像三通道的数组,表示要进行二值化的范围,具体可见代码示例
代码示例
import cv2 as cv
import numpy as np
def colorSpaceDemo(image): #将图片转换成各类型的颜色
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray",gray)
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
cv.imshow("hsv",hsv)
yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
cv.imshow("yuv",yuv)
YCrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
cv.imshow("Ycrcb",YCrcb )
#读取视频
def extraceObjectDemo():
captrue = cv.VideoCapture("test2.mp4")
while(True):
ret, frame = captrue.read()
if ret == False:
break;
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
lowerHsv = np.array([37, 43, 46])
upperHsv = np.array([77, 255, 255])
mask = cv.inRange(hsv, lowerb = lowerHsv , upperb = upperHsv )
cv.imshow('video',frame)
#mask 通过对某一个范围的像素值进行检测,可以用来追踪
cv.imshow('mask', mask)
c = cv.waitKey(40)
if c==27: #按ESC键退出
break
src=cv.imread("D:/openCV_image/image/1.png")
# print(src)
#cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #新建一个window窗口,名字是input image,窗口大小为cv.WINDOW_AUTOSIZE,表示自动缩放
# colorSpaceDemo(src)
# extraceObjectDemo()
b, g, r = cv.split(src) #彩色通道分割
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
# src[:,:,2] = 0 #将src的最后一个通道置0,效果可查看
# src[:,:,0] = 0
# src = cv.merge([b, g, r]) #可以将拆开的通道再合并
cv.imshow("input image",src)
cv.waitKey(0) #等待按键,参数是等待时间
cv.destroyAllWindows() #摧毁所有windows窗口