zoukankan      html  css  js  c++  java
  • Opencv角点检测

    #include "stdafx.h"
    
    #define max_corners 20
    
    int main()
    {
        int cornerNum = max_corners;
        vector<Point2f>corner;
        double qualityLevel = 0.05;
        double minDistance = 5;
        double scalar = 0.5;
        Mat srcImg,srcImg1;
        Mat grayImg,grayImg1,grayImg2;
        Mat disImg;
        int i;
    
        //VideoCapture video("E:\C_VC_code\Text_Photo\feini.flv");
        VideoCapture video(0);
        if(!video.isOpened())
        {
            return -1;
        }
        video>>srcImg;
        resize(srcImg,srcImg1,Size(srcImg.cols*scalar,srcImg.rows*scalar),1,1,3);
        cvtColor(srcImg1,grayImg,CV_BGR2GRAY, 1);
        Rect rect;
        double up,down,left,right;
        while(1)
        {
            video>>srcImg;
            resize(srcImg,srcImg1,Size(srcImg.cols*scalar,srcImg.rows*scalar),1,1,3);
            //disImg = srcImg(Rect(200,150,130,130));
            cvtColor(srcImg1,grayImg1,CV_BGR2GRAY, 1);
            absdiff(grayImg1,grayImg,grayImg2);
            goodFeaturesToTrack(grayImg2,corner,cornerNum,qualityLevel,minDistance,Mat(),3,false,0.04);
            resize(srcImg,srcImg1,Size(srcImg.cols*scalar,srcImg.rows*scalar),1,1,3);
            cvtColor(srcImg1,grayImg,CV_BGR2GRAY, 1);
            up = left = 0x3f3f3f3f;
            down = right = -0x3f3f3f3f;
    
            for(i=0;i<corner.size();i++)
            {
                up = min(up, corner[i].y*1.0);
                left = min(left, corner[i].x*1.0);
                down = max(down, corner[i].y*1.0);
                right = max(right, corner[i].x*1.0);
                circle(srcImg1,Point(corner[i].x,corner[i].y),2,Scalar(0,255,0),2);
            }
            rect.x = left;
            rect.y = up;
            cout<< right<<" " <<down<<endl;
            rect.width = right-left;
            rect.height = up-down;
    
            rectangle(srcImg1,rect,Scalar(255,0,0),2);
    
            imshow("gray",grayImg2);
            imshow("x",srcImg1);
            
            if(waitKey(33)>0)
                break;
        }
        return 0;
    }
  • 相关阅读:
    文本框textarea根据输入内容自适应高度 和输入中文和数字换行解决方法
    switch 和 if...else if 的区别
    vue中 eCharts 自适应容器
    AJAX跨域POST发送json时,会先发送一个OPTIONS预请求
    获取鼠标和元素的坐标点
    vue2 数据交互 vue-resource
    网站代码初始化
    vue2 关于ref
    事件监听
    cookie 的 写入,读取, 删除
  • 原文地址:https://www.cnblogs.com/mypsq/p/5003593.html
Copyright © 2011-2022 走看看