opencv,关于物体检测

关于物体检测

环境: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

 1 #include <string>
 2 #include <iostream>
 3 #include <stdio.h>
 4 #include <fstream>
 5 #include<math.h>
 6
 7 #include <opencv2\opencv.hpp>
 8 #include <opencv2\highgui\highgui.hpp>
 9 #include <opencv2\imgproc\imgproc.hpp>
10 #include <opencv2\core\core.hpp>
11
12 using namespace std;
13 using namespace cv;
14
15 #define threshold_diff 20
16 int main()
17 {
18     Mat src1 = imread("图片1.png"), gray1;
19     cvtColor(src1, gray1, COLOR_BGR2GRAY);
20     Mat src2 = imread("图片2.png"), gray2;
21     cvtColor(src2, gray2, COLOR_BGR2GRAY);
22     //降噪
23     blur(gray1, gray1, Size(3, 3));
24     blur(gray2, gray2, Size(3, 3));
25
26     //二值化
27     Mat gray_diff;
28     //CvMat *src1, *src2;
29     //cvAbsDiff(gray_src_y, gray_src_no, abs_src);
30     subtract(gray2, gray1, gray_diff);
31     for (int i = 0; i < gray_diff.rows; i++)
32     {
33         for (int j = 0; j < gray_diff.cols; j++)
34         {
35             if (abs(gray_diff.at<unsigned char>(i,j)) >= threshold_diff)
36                 gray_diff.at<unsigned char>(i, j) = 255;
37             else
38                 gray_diff.at<unsigned char>(i, j) = 0;
39         }
40     }
41
42     //开运算(膨胀腐蚀算子)
43     Mat out;
44     Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));
45     erode(gray_diff, out, element);
46     dilate(out, out, element);
47
48     //查找轮廓
49     Mat dst = Mat::zeros(out.size(), CV_8UC3);
50     vector<vector<Point>> contours;
51     vector<Vec4i> hierarchy;
52     findContours(out, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
53     int index = 0, largestComp;
54     double maxArea = 0;
55     for (; index >= 0; index  = hierarchy[index][0])
56     {
57         const vector<Point>& c = contours[index];
58         double area = fabs(contourArea(Mat(c)));
59         if (area >maxArea)
60         {
61             maxArea = area;
62             largestComp = index;
63
64         }
65     }
66     Scalar color(0, 255, 0);
67     drawContours(dst, contours, largestComp, color, CV_FILLED, 8, hierarchy);
68
69     imshow("轮廓图", dst);
70
71     imshow("原图", src1);
72     imshow("放入物品", src2);
73     imshow("图片差", gray_diff);
74     imshow("开运算", out);
75
76     waitKey(0);
77     system("pause");
78     return 0;
79 }

时间: 2024-08-19 06:19:32

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

图像物体检测识别中的LBP特征

1        引言 之前讲了人脸识别中的Haar特征,本文则关注人脸检测中的LBP特征,说是对于人脸检测的,其实对于其他物体也能检测,只需修改训练数据集即可.所以本文的题目是物体检测识别,比如可以检测是否汽车是否有车牌号等. 在opencv实现的haar特征的人脸识别算法中,LBP特征也被支持. haar特征的博文链接:http://blog.csdn.net/stdcoutzyx/article/details/34842233. 2        LBP的历史 1996年,Ojala老大

一篇文章看懂物体检测的发展脉络 转

转 https://zhuanlan.zhihu.com/p/28399320 第一,什么是物体检测,如何去评价一个物体里系统的好坏. 第二,物体检测整个的框架是怎么样的?它一般包含了图像的分类和物体检测的定位. 第三,介绍物体检测的历史发展,从传统的人工设计的一些图像特征加上分类器到现在的深度学习. ▼ What's Computer Vision 介绍物体检测之前,我们首先要知道什么是计算机视觉.计算机视觉是计算机科学的一个分支领域,旨在构造智能算法和程序,来"观察"这个世界.比如

基于opencv的人脸检测的web应用

参考资料 https://github.com/bsdnoobz/web-based-face-detect http://opencv-code.com/projects/web-based-interface-for-face-detection-with-opencv/ http://www.cnblogs.com/findingsea/archive/2012/03/31/2427833.html 流程如下图 背景知识 php调用exe的返回 <html> <body> &

卷积神经网络物体检测之感受野大小计算

学习RCNN系列论文时, 出现了感受野(receptive field)的名词, 感受野的尺寸大小是如何计算的,在网上没有搜到特别详细的介绍, 为了加深印象,记录下自己对这一感念的理解,希望对理解基于CNN的物体检测过程有所帮助. 1 感受野的概念 在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小. RCNN论文中有一段描述,Alexnet网络pool5输出的特征图上的像素在输入图像上有很大的感受野(have very

(转)基于深度学习的物体检测

本文转自:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2015/12/07/%E7%89%A9%E4%BD%93%E6%A3%80%E6%B5%8B.html 物体检测 Index RCNN Fast RCNN Faster RCNN R-FCN YOLO SSD NMS xywh VS xyxy RCNN Rich feature hierarchies for accurate object detection and semantic

C++开发人脸性别识别教程(4)——OpenCv的人脸检测函数

这个项目主要包含三部分:人脸检测.特征提取.性别分类: 这篇博客中我们重点介绍OpenCv的人脸检测函数.这篇博客我们先不提MFC,而是在win32控制台下编写一段人脸检测的程序. 一.开启摄像头 我们先讲解如何通过摄像头来采集图像,这听起来更有实际意义. 1.新建工程并配置OpenCv(注意工程类型选择win32控制台应用程序): 2.包含头文件 OpenCv2.x版本包含头文件非常方便,一句话搞定: #include <opencv2\opencv.hpp> using namespace

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

OpenCV特征点检测------ORB特征 ORB是是ORiented Brief的简称.ORB的描述在下面文章中: Ethan Rublee and Vincent Rabaud and Kurt Konolige and Gary Bradski, ORB: an efcient alternative to SIFT or SURF, ICCV 2011 没有加上链接是因为作者确实还没有放出论文,不过OpenCV2.3RC中已经有了实现,WillowGarage有一个talk也提到了这个

运动物体检测——光流法(摄像机固定)

前面的一篇文章谈了高斯背景模型在运动物体检测中的应用.本文主要讨论另一种方法——光流法.与高斯背景模型的方法不同,光流法可以用于摄像机固定和摄像机运动的情形,但本文只就摄像机固定的情况进行讨论,即不涉及摄像机运动预测问题. 光流法的介绍 在空间中,运动可以用运动场描述.而在一个图像平面上,物体的运动往往是通过图像序列中不同图象灰度分布的不同体现的.从而,空间中的运动场转移到图像上就表示为光流场,光流场反映了图像上每一点灰度的变化趋势. 光流可以看作带有灰度的像素点在图像平面运动产生的瞬时速度场.

非极大抑制(Non-maximum suppression)在物体检测领域的应用

最近在一个项目,需要用到非极大值抑制,找了很长时间没有找到非极大抑制在物体检测方面的的详细解释,最后只有翻阅相关的代码来理解. 一.Nms主要目的 在物体检测非极大抑制应用十分广泛,主要目的是为了消除多余的框,找到最佳的物体检测的位置. 如上图中:虽然几个框都检测到了人脸,但是我不需要这么多的框,我需要找到一个最能表达人脸的框.下图汽车检测也是同样的原理. 二.原理 非极大抑制,顾名思义就是把非极大值过滤掉(抑制).下面我就R-CNN或者SPP_net中的matlab源码来进行解释. funct