OPENCV实现色带检测

本文介绍了如何利用OpenCV库来实现摄像头检测地上的色带,并通过代码展示了使用C++进行色带检测的实现过程,包括视频读取、图像处理、边缘检测和Hough变换。文章还提到了现有方案的局限,如颜色检测、光照条件和边缘检测的准确性问题。
摘要由CSDN通过智能技术生成

今天在家无聊,终于有时间写下我的第一篇CSDN博客啦,前段时间帮一个老师做一个项目,用摄像头检测地上的色带,输出角度帮助机器人寻迹。就想到用opencv来做,可以我不会啊尴尬,怎么办?看呗。这里对opencv点个赞!函数通俗易懂,环境配置也比较简单,英语阅读能力好的人都不用买书的,看文档就可以用得飞起啊~~

看了几天就把程序写好了,用得不好大家不喜勿碰,思路如下:


程序如下:

// camera.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>  
#include <opencv2/opencv.hpp>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include "stdio.h"
#include "findtape.h"


using namespace cv;
using namespace std;


int minVotenum=50;


int _tmain(int argc, _TCHAR* argv[])
{
VideoCapture cap0(0);//打开一个摄像头  
VideoCapture cap1(1);//打开一个摄像头 笔记本必须要两个,否则打不开外置摄像头
vector<Vec4i> lines,resultlines;//存储视频中直线的起点和终点
Mat source_frame,source_frame1,gray_frame;//新建两帧图像 
int frame_width,frame_height;
namedWindow("视频",WINDOW_AUTOSIZE);//新建一个图像窗口


    if(!cap0.isOpened()) //判断是否打开 
    {  
cerr<<"Can not open a camera or file."<<endl;
        return -1;  
    }
//获取视频的宽和高
frame_height=(int)cap0.get(CV_CAP_PROP_FRAME_HEIGHT);
frame_width=(int)cap0.get(CV_CAP_PROP_FRAME_WIDTH);


    

//namedWindow("灰度视频",WINDOW_AUTOSIZE);//新建一个图像窗口
    bool stop = false;  
    while(!stop)  
    {  
        cap0>>source_frame;//从视频一副图片 
cap1>>source_frame1;//从视频一副图片  这句没用的,为了打开外置摄像头而已

cvtColor(source_frame, gray_frame, CV_BGR2GRAY);//转换成灰度图像  
        GaussianBlur(gray_frame, gray_frame, Size(7,7), 1.5, 1.5,BORDER_DEFAULT); //高斯滤波 
Canny(gray_frame, gray_frame, 50, 150, 3); //边缘检测 内部用到sobel计算梯度 可以调整阈值 想想怎么弄成自动阈值
//Hough变换
//检测直线,最小投票为50,线条不短于50,间隙不小于20
HoughLinesP( gray_frame, lines,1,CV_PI/360,minVotenum,50,20);
//找出目标直线 并计算角度 距离

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值