一.opencv常用识别任务
1颜色识别(BGR格式)
1.1.首先转换到HSV颜色空间
1.2.定义阈值(网上的参数还需自己根据实际再稍加调整)
如:min_red=np.array([0,100,100])
max_red=np.array([10,255,255])
H S V
H:调节色调 S:调节饱和度 V:调节亮度
2.形状识别(轮廓检测)
2.1正方形
使用cv2.approxPolyDP()函数
如:if len(approx)==4——代表该轮廓接近四边形,有四个顶点
2.2 三角形
if len(approx)==3————代表该轮廓接近三边形,有三个顶点
2.3 圆(建议用霍夫圆检测)
使用cv2.HoughCircles()函数
3.数字识别
3.1使用pytesseract库(识别不稳定)
3.2训练模型
4.二维码识别
4.1 QR码
使用QRCodeDetector()——QR二维码检测器,opencv自带的。适合实时检测效率比pyzbar高。不能检测条形码。
使用pyzbar库——可以检测QR码以及条形码。
4.2 ArUco码
使用opencv中的aruco模块。需知道所用ArUco码的字典类型。
二.opencv常用图像处理
1.形态学:
腐蚀:去除小的噪声,分离接触的物体。
膨胀:填补小的空洞,连接接近的物体。
开运算:腐蚀->膨胀。适合消除小的噪声。
闭运算:膨胀->腐蚀。填补小的空洞。
梯度:用于边缘检测。
顶帽:原图像-开运算——适合提取小的亮区域。
黑帽:闭运算-原图像——适合提取小的暗区域。
2.主要运用的滤波
中值滤波:去除噪声,保留边缘。
高斯滤波:平滑效果好。
3.主要运用的边缘算子
Sobel算子:检测边缘方向。
Canny算子:可去噪和检测边缘(经常用的)
4.缩放处理
cv2.resize()函数。定义缩放因子,确定缩放百分比。