資源簡(jiǎn)介
程序目的是對(duì)傳送帶上物件的定位,需要提取物件坐標(biāo)。主要運(yùn)用Opencv中的尋找輪廓函數(shù)findContours()作為程序核心,為了雜質(zhì)的干擾,處理高斯濾波,做了一個(gè)輪廓面積的計(jì)算,來(lái)去除雜質(zhì)

代碼片段和文件信息
#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邊緣檢測(cè)圖像???????
Mat?canny_output;
vector?>?contours;
vector?hierarchy;
//利用canny算法檢測(cè)邊緣???????
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);//刪除目標(biāo)元素
}
else
{
++iter;
}
}
cout?<“篩選后總共輪廓個(gè)數(shù)為:“?<(int)contours.size()?<
//計(jì)算輪廓矩???????
vector?mu(contours.size());
for?(int?i?=?0;?i? {
mu[i]?=?moments(contours[i]?false);
}
//計(jì)算輪廓的質(zhì)心?????
vector?mc(contours.size());
for?(int?i?=?0;?i? {
mc[i]?=?Point2d(mu[i].m10?/?mu[i].m00?mu[i].m01?/?mu[i].m00);
}
//畫輪廓及其質(zhì)心并顯示??????
Mat?drawing?=?Mat::zeros(canny_output.size()?CV_8UC3);//創(chuàng)建一個(gè)繪制的背景圖
for?(int?i?=?0;?i {
Scalar?color?=?Scalar(255?0?0);
drawContours(drawing?contours?i?color?2?8?hierarchy?0?Point());//繪制外層和內(nèi)層輪廓
circle(drawing?mc[i]?5?Scalar(0?0?255)?-1?8?0);//繪制圓
//boundingRect()返回指定點(diǎn)集最外面的矩形邊界
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?< 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;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????134144??2017-11-13?09:56??moments_center\Debug\moments_center.exe
?????文件????1021500??2017-11-13?09:56??moments_center\Debug\moments_center.ilk
?????文件????3910656??2017-11-13?09:56??moments_center\Debug\moments_center.pdb
?????文件??????26262??2017-11-08?20:21??moments_center\moments_center\1.jpg
?????文件?????235557??2017-11-09?21:32??moments_center\moments_center\3.JPG
?????文件?????586574??2017-11-13?09:56??moments_center\moments_center\Debug\main.obj
?????文件???????9782??2017-11-13?09:56??moments_center\moments_center\Debug\moments_center.log
?????文件???????1412??2017-11-13?09:56??moments_center\moments_center\Debug\moments_center.tlog\cl.command.1.tlog
?????文件??????18770??2017-11-13?09:56??moments_center\moments_center\Debug\moments_center.tlog\CL.read.1.tlog
?????文件????????692??2017-11-13?09:56??moments_center\moments_center\Debug\moments_center.tlog\CL.write.1.tlog
?????文件??????13848??2017-11-13?09:56??moments_center\moments_center\Debug\moments_center.tlog\li
?????文件??????30972??2017-11-13?09:56??moments_center\moments_center\Debug\moments_center.tlog\li
?????文件????????670??2017-11-13?09:56??moments_center\moments_center\Debug\moments_center.tlog\li
?????文件????????189??2017-11-13?09:56??moments_center\moments_center\Debug\moments_center.tlog\moments_center.lastbuildstate
?????文件?????535552??2017-11-13?09:56??moments_center\moments_center\Debug\vc120.idb
?????文件?????978944??2017-11-13?09:56??moments_center\moments_center\Debug\vc120.pdb
?????文件???????2669??2017-11-13?20:26??moments_center\moments_center\main.cpp
?????文件???????4025??2017-11-08?22:52??moments_center\moments_center\moments_center.vcxproj
?????文件????????945??2017-11-08?22:52??moments_center\moments_center\moments_center.vcxproj.filters
?????文件????1501171??2017-11-08?23:04??moments_center\moments_center\Release\main.obj
?????文件???????7569??2017-11-08?23:16??moments_center\moments_center\Release\moments_center.log
?????文件???????1432??2017-11-08?23:04??moments_center\moments_center\Release\moments_center.tlog\cl.command.1.tlog
?????文件??????18636??2017-11-08?23:04??moments_center\moments_center\Release\moments_center.tlog\CL.read.1.tlog
?????文件????????524??2017-11-08?23:04??moments_center\moments_center\Release\moments_center.tlog\CL.write.1.tlog
?????文件??????13940??2017-11-08?23:16??moments_center\moments_center\Release\moments_center.tlog\li
?????文件??????31666??2017-11-08?23:16??moments_center\moments_center\Release\moments_center.tlog\li
?????文件????????518??2017-11-08?23:16??moments_center\moments_center\Release\moments_center.tlog\li
?????文件????????191??2017-11-08?23:16??moments_center\moments_center\Release\moments_center.tlog\moments_center.lastbuildstate
?????文件?????831488??2017-11-08?23:04??moments_center\moments_center\Release\vc120.pdb
?????文件???14221312??2017-11-13?20:26??moments_center\moments_center.sdf
............此處省略15個(gè)文件信息
評(píng)論
共有 條評(píng)論