车辆检测步骤
窗口的展示 图像视频的加载 基本图形绘制 车辆识别
一.显示窗口
1.namedWindow() 窗口名
2.imshow() 显示窗口
3.destroyAllwindows() 销毁所有窗口
4.resizeWindow 将窗口设置大小
二.加载图片
1.imread(path,flag) 显示图片
存在问题:语法检测问题 window与MAC/Linux不同
三.保存图片
1.imwrite(name,img) 保存图片
四.视频采集
VideoCapture( ) read
五.视频录制
VideoWriter(指定输出文件 多媒体文件格式 帧率 分辨率大小) write release
六.设置鼠标回调函数
setMouseCallback(winname,callback,userdata)
窗口名,回调函数,传递参数
callback(event,x,y,flags,userdata)
鼠标事件 坐标 坐标 鼠标键和组合键 传递参数
七:TrackBar控件 滑块
creatTrackbar(trackbarname,winname,value,count,callback,userdata)
控件名,窗口名, trackbar当前值,最大值
getTrackbarPos(trackbarname,winname,当前值)
八:opencv的色彩空间
色彩空间变换 cvtColor( )
颜色空间: RGB 人眼的色彩空间
BGR opencv默认使用
HSV/HSB/HSL 处理图像色彩
Hue:色相 Saturation:饱和度 Value:明度
YUV 主要用于视频 YUV 4:2:0
像素访问
矩阵的+-*/
九:Numpy基本操作
创建矩阵
创建数组array[ ]
创建全0数组 zeros()/ones
创建全值数组 full()
创建单元数组 identity/eye()
检索与赋值[y,x]
[y,x] [y,x,channel]
获取子数组[:,:]
[y1:y2,x1:x2] [:,:]
十.Mat的深拷贝和浅拷贝
浅拷贝:
Mat A
A=imread(file,IMREAD_COLOR)
Mat B
深拷贝:
cv::Mat::clone()
cv::Mat::copyTo()
copy()
十一:访问图像(Mat)的多种属性
#shape属性中包括三种属性
# 高度 长度 通道数
print(img.shape)
#图像占用多大空间
#高度*长度*通道数
print(img.size)
#图像中每个元素的位深
print(img.dtype)
十二:通道的分离和合并
split(mat) 分离
merge((ch1,ch2,......)) 合并
十三:绘制基本图形
画线line (img,开始点,结束点,颜色,线宽,线型,坐标缩放比例)
画矩形 rectangle(img,(10,10),(100,100),(0,0,255)) 画圆 circle
画椭圆 ellipse(img,中心点,长宽一半,角度,从哪个角度开始,到哪个角度结束)
画多边形 polylines(img,点集,是否闭环,颜色,。。。) 填充 fillPoly()
绘制文本 putText
十四:图像的运算
图像相加
图像相减 subtract(A,B) A-B
乘除 multiply(A,B) divide(A,B)
十五:图像的融合
addWeighted(A,alpha,B,bate,gamma)
静态权重
十六:位运算
与 bitwise_and(a,b) 或 bitwise_or(a,b) 非 bitwise_not 异或 bitwise_xor(a,b)
十七:图像的缩放
resize(src,dsize,fx,fy,interpolation=)
插值算法 :插近插值 双线型插值(默认) 三次插值 INTER_AREA
十八:图像的翻转
flip(img,flipCode)flipCode==0 上下 flipCode>0 左右 flipCode<0 上下+左右
十九:图像的旋转
rotate(img,rotateCode) ROTATE_90_CLOCKWISE
ROTATE_180
ROTATE_90_COUNTERCLOCKWISE
二十:仿射变换
旋转 缩放 平移的统称
平移矩阵 每个像素有(x,y)组成
warpAffine(src,M,dsize,flags,mode,value)
变换矩阵 输出尺寸大小 flags与插值算法一致 边界外推法标志 填充边界值
变换矩阵
getRotationMatrix2D(center,angel,scale)
中心点 角度(逆时针) 缩放
变换矩阵2 根据三个点确定
getAffineTransform(src[],dst[])
二十一:透视变换
warPerspective(img,M,())
getPerspectiveTransform(src,dst)
二十二;卷积的相关概念
卷积核 锚点
边界扩充 N=(w-F+2p)/S+1
N输出图像大小 W原图大小 F卷积核大小 P扩充尺寸 S 步长大小
低通滤波 去除录音 平滑图像
filter2D(src,ddepth,kernel,anchor,delta,borderType)
位深 卷积核 锚点 滤波结束后的标记值 边界类
均值滤波blur() 方盒滤波 高斯滤波GaussianBulr()
双边滤波--用于美颜bilateralFilter()
高通滤波 查找图像边缘
Sobel(索贝尔) Scharr(沙尔) Laplacian(拉普拉斯)需要手动降噪
Sobel(src,ddepth,dx,dy,ksiz)
去背景
createBackgroundSubtractorMOG()
history(200)
二值化处理 彩色变黑白
进行形态学处理
滤波去除噪点
缩放