Opencv绘制物体轮廓,定位主要物件坐标


程序目的是对传送带上物件的定位,需要提取物件坐标。主要运用Opencv中的寻找轮廓函数findContours()作为程序核心,为了杂质的干扰,处理高斯滤波,做了一个轮廓面积的计算,来去除杂质
资源截图
代码片段和文件信息
#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.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个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)