关于opencv从图中画圈的思考
来源:互联网 发布:dubstep软件怎么用 编辑:程序博客网 时间:2024/06/07 10:02
- 读取图像;
- 对图像进行操作;
- 识别球门;
- 识别途中白色区域;
- 从图像上一行一行的扫描识别像素BGR值为(0,0,255);
直到出现有白色区域时开始记录数据,可以将第一次扫描到点所在的第一行下十行进行最左边的白色点的记录,以及最右边点的记录。从这两个点的所在列搜索一直到最下面的绿色边界为止,进行对这两个点的记录,划定出一个矩形区域。
(这里倒是也可以用最上面的点,最下面的点,最左边的点,最右边的点,这四个点来做划定,似乎可能有偏差?)
(可以试试哪一种更好一些)
Circle———— C++: void circle(Mat&img, Point center, int radius, const Scalar&color,int thickness=1, int lineType=8, int shift=0) Parameters: img – 要画圆的那个矩形. center – 圆心坐标. radius – 半径. color – 圆边框颜色,scalar类型的 thickness – 正值表示圆边框宽度. 负值表示画一个填充圆形 lineType – 圆边框线型 shift – 圆心坐标和半径的小数点位数
- 用坐标求出中点,四点相加求平均;
- 点到四点之一的距离作半径;
- 颜色随意,暂用(0,255,255);
- 宽度为1;
- 对于shift参数,缺省吧;
以下是我的程序,求指教,有问题
#include <iostream>#include "opencv2/opencv.hpp"#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "math.h"using namespace cv;using namespace std;int main(){ Point zs,ys,zx,yx; Mat img = imread( "src\\door.jpg", 0);//二值化 imshow("img",img); threshold(img, img, 200, 255, THRESH_BINARY); imshow("img2",img); for (int i = 0; i < img.rows; ++i) { for (int j = 0; j < img.cols; ++j) { if (int(img.at<uchar>(i,j)) == 255 && int(img.at<uchar>(i,j-10)) == 0) { zs.x = i + 10; zs.y = j; for (int k = i;k < img.rows; ++k) { //可以考虑做一个子函数,专门用来辨别几行或几列是否颜色一样 if (int(img.at<uchar>(i,j)) == 0) { if (int(img.at<uchar>(i + 10,j)) == 0) { zx.x = i; zx.y = j; } } break; } } if (int(img.at<uchar>(i,j)) == 255 && int(img.at<uchar>(i,j+10)) == 0) { ys.x = i + 10; ys.y = j; for (int k = i;k < img.rows; ++k) { //可以考虑做一个子函数,专门用来辨别几行或几列是否颜色一样 if (int(img.at<uchar>(i,j)) == 0) { if (int(img.at<uchar>(i + 10,j)) == 0) { yx.x = i; yx.y = j; } } break; } } } } Point center; center.x = (zs.x + yx.x + zx.x + ys.x) / 4; center.y = (zs.y + yx.y + zx.y + ys.y) / 4; int radius = sqrt((double)((zs.x-center.x)*(zs.x-center.x)+(zs.y-center.y)*(zs.y-center.y))); circle(img, center, radius, Scalar(0,255,255), 1, 8); imshow("img3",img); waitKey(0); return 0;}
略感奔溃……
求指教
0 0
- 关于opencv从图中画圈的思考
- 关于思考的思考
- 关于思考的思考
- 关于后台从阿里云获取文件的一些思考
- 关于是否要从游戏测试行业跳出来的思考
- 关于blog的思考。
- 关于克隆技术的思考
- 关于爱的思考
- 关于p2p的思考
- 关于编码的思考
- 关于国产软件的思考
- 关于IObjectSafety的思考
- 关于程序员的思考
- 关于const的思考
- 关于搜索引擎的思考!
- 关于.net的思考
- 关于试验的思考
- 关于博弈的思考
- bzoj1845【CQOI2005】三角形面积并
- 文件复制
- VS2013 cuda7.5 配置
- 彻底弄明白之java多线程中的volatile
- 复制文本文件
- 关于opencv从图中画圈的思考
- ubuntu安装vim时提示 没有可用的软件包 vim,但是它被其它的软件包引用了 解决办法
- 装系统问题,BIOS显示不出硬盘解决方案
- poj--2823 Sliding Window(单调队列)
- python基础学习01
- Linux c 数组大小的限制
- 控制台输出的内容复制到txt文件
- hibernate.hbm.xml 属性详解
- 在android studio 2.1 实现简单的ndk