1) threshold函数 —— 用于对图像做二值化处理
例: cv::threshold(in_map, out_map, 200, 255, cv::THRESH_BINARY);
// 参数含义: 输入图像、输出图像、设定的阈值大小、最大灰度值、阈值类型(多种)
2)erode函数 —— 用于腐蚀图像
例: cv::erode(in_map, out_map, element, cv::Point(-1, -1), 1);
// 参数含义: 输入图像、输出图像、腐蚀内核(多种,可使用官方提供的,也可以自定义,腐蚀后的形态会不同)、定位点的位置(默认在中心,例子里的写法就是默认值)、腐蚀次数
// https://www.freesion.com/article/46541548450/ 解释得很清楚
3)line函数 —— 用于在图像上画线段
例: cv::line(img, cv::Point(points[0].x, points[0].y), cv::Point(points.back().x, points.back().y), cv::Scalar(color), thickness, 8, 0);
// 参数含义: 待画线图像、线段起点、线段终点、线段颜色、线段粗细、邻域数量(4或者8)、坐标点的小数点位数
4)floodFill函数 —— 在图像中寻找特定连通区域并填充颜色
例: cv::floodFill(in_map, cv::Point(0, 0), cv::Scalar(0));
5)findContours函数 —— 寻找轮廓
例: cv::findContours(in_map, all_contours, cv::RETR_TREE, cv::CHAIN_APPROX_NONE);
// 参数含义: 输入图像、检测到的所有轮廓、检测模式(有只检测最外层轮廓,检测所有轮廓等模式)、近似方法(有几种方法,这里是输出轮廓上的所有像素点)
6)drawContours函数 —— 绘制轮廓
例:cv::drawContours(in_map, all_contours, 0, cv::Scalar(255), 1);
// 参数含义: 输入图像、所有轮廓、需要绘制的轮廓索引(-1表示所有轮廓)、轮廓的颜色、轮廓的粗细
7)Canny函数 —— 检测图像边缘
例:cv::Canny(in_map, edge_map, 50, 150, 3);
// 参数含义: 输入图像、边缘图像、低阈值、高阈值、算子尺寸
8)HoughLinesP函数 —— 检测霍夫直线
例:cv::HoughLinesP(edge_map, lines, 1, CV_PI/180, min_line_length/map_resolution, min_line_length/map_resolution, 1.5*min_line_length/map_resolution);
// 参数含义: 输入图像(通常是一张边缘图像)、检测结果、生成极坐标的像素分辨率、生成极坐标的角度分辨率、累加阈值(极坐标下,交点数量大于阈值时,才能被当成直线)、直线最小长度、同一直线上相邻点的最大距离
// https://blog.csdn.net/Li_haiyu/article/details/106397532 解释得很清楚
9)boundingRect函数 —— 获取轮廓的最小正矩形
例:cv::boundingRect(contour);
// 参数含义: 待求的轮廓
10)resize函数 —— 缩放图像(该操作通常会改变图像的像素值)
例:cv::resize(in_map, out_map, cv::Size(new_cols, new_rows));
// 参数含义: 输入图像、输出图像、输出图像的尺寸
11)transpose函数 —— 图像翻转
例:cv::transpose(in_map, out_map);
// 参数含义: 输入图像、逆时针翻转90度后的图像
12) copyTo函数 —— 图像拷贝
例:A.copyTo(B,mask)
mask是一张灰度图,如果mask是0(黑色),保留B的值不变,如果mask不为0,把A对应像素的值赋值给B
mask是一张灰度图,如果mask是0(黑色),保留B的值不变,如果mask不为0,把A对应像素的值赋值给B