Opencv角点检测
2015-11-28 22:24
204 查看
#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; }
相关文章推荐
- 开启reuse_port让Tengine性能提升3倍
- Hadoop ->> HIVE
- Permutations(copy)
- Open CV 三帧差法
- CentOS下安装xampp
- Hadoop2.6.0学习笔记(九)文件的存储结构
- 登录linux系统设置默认目录
- LVS Nginx HAProxy 优缺点
- Hadoop2.6.0学习笔记(七)HDFS读写流程
- HDU 5576 Expection of String (DP, 前缀和维护) 2015年上海现场赛E题
- linux配置java环境变量(详细)
- [Linux学习笔记] Linux软件包管理
- Linux下查看文件和文件夹大小
- Linux下的磁盘分割和文件系统
- CentOS Linux 监控安装之Zabbix
- Linux Netcat命令
- OpenCV2中图像读取、显示、保存等基本操作
- ARM Linux学习,从宿主机传程序到ARM——环境搭建2
- pyopengl 学习日志(1)--配置环境
- Linux cscope命令