在开源龙芯1c开发板上用opencv检测图片中网球并输出圆心坐标和半径

原意是想做一个捡网球的机器人,识别网球就是必须的。项目地址http://git.oschina.net/caogos/OpenLoongsonPickUpTennisRobot

参考了 http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/

主要思路

用cvtColor()将图像转换到HSV颜色空间,用inRange()根据网球颜色提取出网球,通过形态学变换(膨胀和腐蚀)除去网球上的条纹和字,使识别出的网球更圆,用findContours()找轮廓,再用minEnclosingCircle()找轮廓的最小外接圆。

源码

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <sys/time.h>
#include "v4l2_capture_picture.h"

using namespace std;
using namespace cv;


#define CAPTURE_PICTURE_PATH 		"/test/PickUpTennisRobot/capture_picture.jpg"

// 图片中网球的最小半径,注意不是实际的网球半径
#define MIN_CIRCLE_RADIUS			(25)


// 打印当前时间
void PrintCurrentTime(void)
{
	struct timeval tv;
	gettimeofday(&tv, NULL);
	cout << tv.tv_sec << "." << tv.tv_usec << endl;
}

int main(int argc, char** argv)
{
	Mat src, src_gray;
	int ret = 0;

/*
	// 通过摄像头抓拍
	ret = capture_picture(CAPTURE_PICTURE_PATH);
	if (0 != ret)
	{
		std::cout << "capture_picture fail." << std::endl;
		return ret;
	}
*/
	/// Rea
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值