54 lines
2.1 KiB
C++
54 lines
2.1 KiB
C++
/*
|
||
* ====================================================
|
||
|
||
* 功能:
|
||
* 作者:何承洁
|
||
* 生成时间:2023/12/13
|
||
* 最近修改时间:2023/12/13 v3.0
|
||
* 版本号:v3.0
|
||
|
||
* ====================================================
|
||
*/
|
||
|
||
#ifndef LINE_CONTINUITY_AND_RGB_DETECTION_H
|
||
#define LINE_CONTINUITY_AND_RGB_DETECTION_H
|
||
|
||
#include <opencv2/opencv.hpp>
|
||
#include <memory>
|
||
#include <vector>
|
||
#include <opencv2/core/core_c.h>
|
||
#include <opencv2/core/types_c.h>
|
||
#include <opencv2/imgproc/imgproc_c.h>
|
||
|
||
class LineContinuityAndRGBDetection
|
||
{
|
||
public:
|
||
LineContinuityAndRGBDetection();
|
||
|
||
static int isContinuous(const cv::Mat& image);
|
||
static int RGB_Judge(const cv::Mat& image);
|
||
|
||
private:
|
||
/// <summary>
|
||
/// 获取连通区域轮廓
|
||
/// </summary>
|
||
/// <param name="src">源图像</param>
|
||
/// <param name="contours">结果轮廓集</param>
|
||
/// <param name="hierarchy">轮廓集的排序关系。与contours的数量对应,受retr选项不同,排序会有变化</param>
|
||
/// <param name="retr">轮廓集排序方式,默认为链式排序</param>
|
||
/// <param name="method">查找算法选择,默认为普通查找</param>
|
||
/// <param name="offset">查找起始点,默认为(0,0)点</param>
|
||
static void myFindContours(const cv::Mat& src, std::vector<std::vector<cv::Point>>& contours, std::vector<cv::Vec4i>& hierarchy,
|
||
int retr = cv::RETR_LIST, int method = cv::CHAIN_APPROX_SIMPLE, cv::Point offset = cv::Point(0, 0));
|
||
|
||
/// <summary>
|
||
/// 过滤连通区域轮廓,获取交叉线
|
||
/// </summary>
|
||
/// <param name="distance">两交叉线距离交点相差距离,默认100,超过100,则认为断线</param>
|
||
static int filterBlock(const std::vector<std::vector<cv::Point>>& contours, const std::vector<cv::Vec4i>& hierarchy, const cv::Size& imageSize, double distance = 100);
|
||
static cv::RotatedRect getBoundingRect(const std::vector<cv::Point>& contour);
|
||
static double getDistance(cv::Point pointO, cv::Point pointA);
|
||
static cv::Point2f getCrossPoint(cv::Vec4i LineA, cv::Vec4i LineB);
|
||
};
|
||
|
||
#endif //LINE_CONTINUITY_AND_RGB_DETECTION_H
|