资源简介
程序目的是对传送带上物件的定位,需要提取物件坐标。主要运用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_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个文件信息
- 上一篇:Um接口协议---LapDm协议
- 下一篇:方正商祺系列bios升级包
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
评论
共有 条评论