Opencv绘制物体轮廓,定位主要物件坐标
程序目的是对传送带上物件的定位,需要提取物件坐标。主要运用Opencv中的寻找轮廓函数findContours()作为程序核心,为了杂质的干扰,处理高斯滤波,做了一个轮廓面积的计算,来去除杂质
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 134144 2017-11-13 09:56 moments_centerDebugmoments_center.exe
文件 1021500 2017-11-13 09:56 moments_centerDebugmoments_center.ilk
文件 3910656 2017-11-13 09:56 moments_centerDebugmoments_center.pdb
文件 26262 2017-11-08 20:21 moments_centermoments_center1.jpg
文件 235557 2017-11-09 21:32 moments_centermoments_center3.JPG
文件 586574 2017-11-13 09:56 moments_centermoments_centerDebugmain.obj
文件 9782 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.log
文件 1412 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogcl.command.1.tlog
文件 18770 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogCL.read.1.tlog
文件 692 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogCL.write.1.tlog
文件 13848 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tloglink.command.1.tlog
文件 30972 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tloglink.read.1.tlog
文件 670 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tloglink.write.1.tlog
文件 189 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogmoments_center.lastbuildstate
文件 535552 2017-11-13 09:56 moments_centermoments_centerDebugvc120.idb
文件 978944 2017-11-13 09:56 moments_centermoments_centerDebugvc120.pdb
文件 2669 2017-11-13 20:26 moments_centermoments_centermain.cpp
文件 4025 2017-11-08 22:52 moments_centermoments_centermoments_center.vcxproj
文件 945 2017-11-08 22:52 moments_centermoments_centermoments_center.vcxproj.filters
文件 1501171 2017-11-08 23:04 moments_centermoments_centerReleasemain.obj
文件 7569 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.log
文件 1432 2017-11-08 23:04 moments_centermoments_centerReleasemoments_center.tlogcl.command.1.tlog
文件 18636 2017-11-08 23:04 moments_centermoments_centerReleasemoments_center.tlogCL.read.1.tlog
文件 524 2017-11-08 23:04 moments_centermoments_centerReleasemoments_center.tlogCL.write.1.tlog
文件 13940 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.tloglink.command.1.tlog
文件 31666 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.tloglink.read.1.tlog
文件 518 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.tloglink.write.1.tlog
文件 191 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.tlogmoments_center.lastbuildstate
文件 831488 2017-11-08 23:04 moments_centermoments_centerReleasevc120.pdb
文件 14221312 2017-11-13 20:26 moments_centermoments_center.sdf
............此处省略15个文件信息
#include
#include
#include
#include
using namespace cv;
using namespace std;
Mat src;
Mat src_gray;
int thresh = 30;
int main()
{
src = imread(“3.jpg“ 1);
cvtColor(src src_gray CV_BGR2GRAY);//灰度化
Mat src_dstImage;
//Mat src_s;
GaussianBlur(src_gray src_dstImage Size(5 5) 0.0 0 BORDER_DEFAULT);
namedWindow(“image“ CV_WINDOW_AUTOSIZE);
imshow(“image“ src);
moveWindow(“image“ 20 20);
//定义Canny边缘检测图像
Mat canny_output;
vector > contours;
vector hierarchy;
//利用canny算法检测边缘
Canny(src_dstImage canny_output thresh thresh * 3 3);
Mat element = getStructuringElement(MORPH_RECT Size(2 2));
dilate(canny_output canny_output element);
namedWindow(“canny“ CV_WINDOW_AUTOSIZE);
imshow(“canny“ canny_output);
moveWindow(“canny“ 550 20);
//查找轮廓
findContours(canny_output contours hierarchy CV_RETR_EXTERNAL CV_CHAIN_APPROX_SIMPLE Point(0 0));
vector>::iterator iter = contours.begin();
for (; iter != contours.end(); )
{
double g_dConArea = contourArea(*iter);
if (g_dConArea < 500)
{
iter = contours.erase(iter);//删除目标元素
}
else
{
++iter;
}
}
cout << “筛选后总共轮廓个数为:“ << (int)contours.size() << endl;
//计算轮廓矩
vector mu(contours.size());
for (int i = 0; i < contours.size(); i++)
{
mu[i] = moments(contours[i] false);
}
//计算轮廓的质心
vector mc(contours.size());
for (int i = 0; i < contours.size(); i++)
{
mc[i] = Point2d(mu[i].m10 / mu[i].m00 mu[i].m01 / mu[i].m00);
}
//画轮廓及其质心并显示
Mat drawing = Mat::zeros(canny_output.size() CV_8UC3);//创建一个绘制的背景图
for (int i = 0; i< contours.size(); i++)
{
Scalar color = Scalar(255 0 0);
drawContours(drawing contours i color 2 8 hierarchy 0 Point());//绘制外层和内层轮廓
circle(drawing mc[i] 5 Scalar(0 0 255) -1 8 0);//绘制圆
//boundingRect()返回指定点集最外面的矩形边界
rectangle(drawing boundingRect(contours.at(i)) cvScalar(0 255 0));
char tam[100];
sprintf(tam “(%0.0f%0.0f)“ mc[i].x mc[i].y);
/*printf(“(%0.0f%0.0f)“ mc[i].x mc[i].y);*/
cout << tam << endl;
putText(drawing tam Point(mc[i].x mc[i].y) FONT_HERSHEY_SIMPLEX 0.4 cvScalar(255 0 255) 1);
}
namedWindow(“Contours“ CV_WINDOW_AUTOSIZE);
imshow(“Contours“ drawing);
moveWindow(“Contours“ 1100 20);
waitKey(0);
src.release();
src_gray.release();
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 134144 2017-11-13 09:56 moments_centerDebugmoments_center.exe
文件 1021500 2017-11-13 09:56 moments_centerDebugmoments_center.ilk
文件 3910656 2017-11-13 09:56 moments_centerDebugmoments_center.pdb
文件 26262 2017-11-08 20:21 moments_centermoments_center1.jpg
文件 235557 2017-11-09 21:32 moments_centermoments_center3.JPG
文件 586574 2017-11-13 09:56 moments_centermoments_centerDebugmain.obj
文件 9782 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.log
文件 1412 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogcl.command.1.tlog
文件 18770 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogCL.read.1.tlog
文件 692 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogCL.write.1.tlog
文件 13848 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogli
文件 30972 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogli
文件 670 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogli
文件 189 2017-11-13 09:56 moments_centermoments_centerDebugmoments_center.tlogmoments_center.lastbuildstate
文件 535552 2017-11-13 09:56 moments_centermoments_centerDebugvc120.idb
文件 978944 2017-11-13 09:56 moments_centermoments_centerDebugvc120.pdb
文件 2669 2017-11-13 20:26 moments_centermoments_centermain.cpp
文件 4025 2017-11-08 22:52 moments_centermoments_centermoments_center.vcxproj
文件 945 2017-11-08 22:52 moments_centermoments_centermoments_center.vcxproj.filters
文件 1501171 2017-11-08 23:04 moments_centermoments_centerReleasemain.obj
文件 7569 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.log
文件 1432 2017-11-08 23:04 moments_centermoments_centerReleasemoments_center.tlogcl.command.1.tlog
文件 18636 2017-11-08 23:04 moments_centermoments_centerReleasemoments_center.tlogCL.read.1.tlog
文件 524 2017-11-08 23:04 moments_centermoments_centerReleasemoments_center.tlogCL.write.1.tlog
文件 13940 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.tlogli
文件 31666 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.tlogli
文件 518 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.tlogli
文件 191 2017-11-08 23:16 moments_centermoments_centerReleasemoments_center.tlogmoments_center.lastbuildstate
文件 831488 2017-11-08 23:04 moments_centermoments_centerReleasevc120.pdb
文件 14221312 2017-11-13 20:26 moments_centermoments_center.sdf
............此处省略15个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)