关于物体检测

环境:opencv 2.4.11+vs2013

参考:

http://www.cnblogs.com/tornadomeet/archive/2012/06/02/2531705.html

http://www.cnblogs.com/xinyuyuanm/archive/2013/04/29/3050750.html

 #include <string>
#include <iostream>
#include <stdio.h>
#include <fstream>
#include<math.h> #include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\core\core.hpp> using namespace std;
using namespace cv; #define threshold_diff 20
int main()
{
Mat src1 = imread("图片1.png"), gray1;
cvtColor(src1, gray1, COLOR_BGR2GRAY);
Mat src2 = imread("图片2.png"), gray2;
cvtColor(src2, gray2, COLOR_BGR2GRAY);
//降噪
blur(gray1, gray1, Size(, ));
blur(gray2, gray2, Size(, )); //二值化
Mat gray_diff;
//CvMat *src1, *src2;
//cvAbsDiff(gray_src_y, gray_src_no, abs_src);
subtract(gray2, gray1, gray_diff);
for (int i = ; i < gray_diff.rows; i++)
{
for (int j = ; j < gray_diff.cols; j++)
{
if (abs(gray_diff.at<unsigned char>(i,j)) >= threshold_diff)
gray_diff.at<unsigned char>(i, j) = ;
else
gray_diff.at<unsigned char>(i, j) = ;
}
} //开运算(膨胀腐蚀算子)
Mat out;
Mat element = getStructuringElement(MORPH_RECT, Size(, ));
erode(gray_diff, out, element);
dilate(out, out, element); //查找轮廓
Mat dst = Mat::zeros(out.size(), CV_8UC3);
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(out, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
int index = , largestComp;
double maxArea = ;
for (; index >= ; index = hierarchy[index][])
{
const vector<Point>& c = contours[index];
double area = fabs(contourArea(Mat(c)));
if (area >maxArea)
{
maxArea = area;
largestComp = index; }
}
Scalar color(, , );
drawContours(dst, contours, largestComp, color, CV_FILLED, , hierarchy); imshow("轮廓图", dst); imshow("原图", src1);
imshow("放入物品", src2);
imshow("图片差", gray_diff);
imshow("开运算", out); waitKey();
system("pause");
return ;
}

opencv,关于物体检测的更多相关文章

  1. [PyImageSearch] Ubuntu16.04 使用深度学习和OpenCV实现物体检测

    上一篇博文中讲到如何用OpenCV实现物体分类,但是接下来这篇博文将会告诉你图片中物体的位置具体在哪里. 我们将会知道如何使用OpenCV‘s的dnn模块去加载一个预训练的物体检测网络,它能使得我们将 ...

  2. OpenCV学习 物体检测 人脸识别 填充颜色

    介绍 OpenCV是开源计算机视觉和机器学习库.包含成千上万优化过的算法.项目地址:http://opencv.org/about.html.官方文档:http://docs.opencv.org/m ...

  3. OpenCV平面物体检测

    平面物体检测 这个教程的目标是学习如何使用 features2d 和 calib3d 模块来检测场景中的已知平面物体. 测试数据: 数据图像文件,比如 “box.png”或者“box_in_scene ...

  4. 利用opencv进行移动物体检测

    进行运动物体检测就是将动态的前景从静态的背景中分离出来.将当前画面与假设是静态背景进行比较发现有明显的变化的区域,就可以认为该区域出现移动的物体.在实际情况中由于光照阴影等因素干扰比较大,通过像素直接 ...

  5. OpenCV—Python 轮廓检测 绘出矩形框(findContours\ boundingRect\rectangle

    千万注意opencv的轮廓检测和边缘检测是两码事 本文链接:https://blog.csdn.net/wsp_1138886114/article/details/82945328 1 获取轮廓 O ...

  6. OpenCV实现人脸检测

    OpenCV实现人脸检测(转载)  原文链接:https://www.cnblogs.com/mengdd/archive/2012/08/01/2619043.html 本文介绍最基本的用OpenC ...

  7. OpenCV特征点检测------ORB特征

    OpenCV特征点检测------ORB特征 ORB是是ORiented Brief的简称.ORB的描述在下面文章中: Ethan Rublee and Vincent Rabaud and Kurt ...

  8. opencv车道线检测

    opencv车道线检测 完成的功能 图像裁剪:通过设定图像ROI区域,拷贝图像获得裁剪图像 反透视变换:用的是老师给的视频,没有对应的变换矩阵.所以建立二维坐标,通过四点映射的方法计算矩阵,进行反透视 ...

  9. 【转载】opencv实现人脸检测

    全文转载自CSDN的博客(不知道怎么将CSDN的博客转到博客园,应该没这功能吧,所以直接复制全文了),转载地址如下 http://blog.csdn.net/lsq2902101015/article ...

随机推荐

  1. mysql学习之-逻辑架构

    mysql逻辑架构图: 第一层,服务层(为客户端服务):为请求做连接处理,授权认证,安全等. 1.  每个连接的查询都在一个进程中的线程完成. 2.  服务器负责缓存线程,所以服务层不需要为每个连接新 ...

  2. Oracle Enterprise Manager Cloud Control 12c的安装

    这里,我介绍的是Cloud Control 12c的安装.之前的版本叫Grid Control,这也是11g里面的叫法.在我写这篇博客时,Cloud Control 13c已经出来了,这个版本后续我再 ...

  3. Java的位运算 待整理

    位运算:二进制运算 Java的异或运算^ 真^假=真 假^真=真 假^假=假 真^真= 假,这四个是在网上copy的例子,真是1,假是0 但它却是说明了Java异或运算的基本法则,那就是:只要两个条件 ...

  4. jquery 使用attr() 函数对复选框无效的原因,javascript那些事儿——properties和attributes

    复选框是网站开发的时候经常用到的网页标签之一,常见的在页面上对复选框的操作包括取值和修改复选框的状态.在jquery中,常见的操作标签的值得函数为attr,然而在操作复选框的时候,通常采用的却是pro ...

  5. axure复用-自定义组件,母版(模板)

    组件(控件)是用于设计线框图的用户界面元素.在组件(控件)面板中包含有常用的控件库,如按钮.图片.文本框等.从组件面板中拖动一个控件到线框图区域中,就可以添加一个组件.组件可以从一个线框图中被拷贝(C ...

  6. linux终端-console

    echo $TERM 在ssh上是xterm 在console上是linux setterm -foreground black -background white -store http://blo ...

  7. GridView中实现点击某行的任意位置就选中该行

    来源:http://auv2009.blog.163.com/blog/static/68858712200992731010670/ 在 GridView中增加一列:(该列是选择按钮,让其不显示) ...

  8. OpenJudge就算概论-统计字符数

    /*===================================== 统计字符数 总时间限制: 1000ms 内存限制: 65536kB 描述 判断一个由a-z这26个字符组成的字符串中哪个 ...

  9. Nagios 监控

    配置文件说明 文件名或目录名 用途 cgi.cfg 控制CGI访问的配置文件 nagios.cfg Nagios 主配置文件 resource.cfg 变量定义文件,又称为资源文件,在些文件中定义变量 ...

  10. leaflet 了解

    Leaflet 是一个为建设移动设备友好的互动地图,而开发的现代的.开源的 JavaScript 库.它是由 Vladimir Agafonkin 带领一个专业贡献者团队开发,虽然代码仅有 33 KB ...