静态检测大风车初版

Posted xingkongcanghai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态检测大风车初版相关的知识,希望对你有一定的参考价值。

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include<vector>
#include<math.h>
#include<iostream>
#include<string>
using namespace cv;
using namespace std;

/***** 求两点间距离*****/
float getDistance(CvPoint pointO, CvPoint pointA)

    float distance;
    distance = powf((pointO.x - pointA.x), 2) + powf((pointO.y - pointA.y), 2);
    distance = sqrtf(distance);
    return distance;



int main()

    namedWindow("test", WINDOW_AUTOSIZE);
    namedWindow("hh", 2);
    VideoCapture cap("G:\\视觉题\\大能量机关(红+关灯).mov");
    /*cap.open("G:\\视觉题\\大能量机关(红+关灯).mov");*/

    while (1)
    
        /*Mat frame;
        Mat midImage, seed;
        cap >> frame;
        if (frame.empty()) break;
        vector<Mat> imgChannels;
        split(frame, imgChannels);
        midImage = imgChannels.at(2) - imgChannels.at(0);
        threshold(midImage, midImage, 100, 255, CV_THRESH_BINARY);
        floodFill(midImage, Point(5, 50), Scalar(0),0, FLOODFILL_FIXED_RANGE);
        Mat dstImage = Mat::zeros(midImage.rows, midImage.cols, CV_8UC3);*/


        Mat frame;
        Mat midImage,hsv;
        Point2f p;
        cap >> frame;
        if (frame.empty()) break;
        cvtColor(frame, hsv, CV_BGR2HSV);
        inRange(hsv, Scalar(11, 43, 46), Scalar(25, 255, 255), midImage);

        
        Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
        morphologyEx(midImage, midImage, MORPH_CLOSE, element);
        imshow("hh", midImage);
        vector<vector<Point> > contours;
        vector<Vec4i> hierarchy;

        findContours(midImage, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
        for (int j = 0; j < contours.size(); j++)
        
            double t = contourArea(contours[j]);
            if (t > 700 && t < 1000)
            
                RotatedRect box;
                box = minAreaRect(contours[j]);
                 p = box.center;
                 /*调试*/
                 Point2f vertex1[4];
                 box.points(vertex1);
                 for (int i = 0; i < 4; i++)
                     line(frame, vertex1[i], vertex1[(i + 1) % 4], Scalar(0, 0, 225), 2, LINE_AA);
                 cout << t << endl;

            
        
        for (int j = 0; j < contours.size(); j++)
        
            double t = contourArea(contours[j]);
            if (t > 11000 && t < 12100)
            
                vector<Point> result;
                for(int i=0;i< contours[j].size();i++)
                if(getDistance(contours[j][i],p)>230)
                
                    result.push_back(contours[j][i]);
                
                
                RotatedRect boxtemp2;
                boxtemp2 = minAreaRect(result);
                Point2f vertex1[4];
                Point2f p0 = boxtemp2.center;
                boxtemp2.points(vertex1);
                for (int i = 0; i < 4; i++)
                    line(frame, vertex1[i], vertex1[(i + 1) % 4], Scalar(225, 0, 0), 2, LINE_AA);
                circle(frame,p0,6,Scalar(0, 225, 0), -1);
            
        
        imshow("test", frame);
        waitKey(1);
    
    return 0;

以上是关于静态检测大风车初版的主要内容,如果未能解决你的问题,请参考以下文章

leveldb 学习。

Visual Studio vc++的静态代码内存泄漏检测

从稀疏 3D 点云中检测静态和动态行人

配置静态路由并能使用BFD功能检测

iOS 内存泄漏的检测方式

iOS 关于静态库 支持设备检测及相关