opencv帧差法找出相差大的图像

 更新时间:2020年03月21日 09:14:31   作者:amulet0703  
这篇文章主要为大家详细介绍了opencv帧差法找出相差大的图像,包含访问mat的像素值,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了opencv帧差法找出相差大的图像,供大家参考,具体内容如下

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/ml/ml.hpp>
#include <string.h>
 
#define IMAGENO 18456
using namespace std;
using namespace cv;
 
int main(int argc,char * argv())
{
 string ImgName;
 char OutName[100];
 Mat Image,tempImage,previousImage,currentImage,resultImage;
 
 ifstream fin("ImageList.txt");
 //ifstream fin("new.txt");
 
 for(int num=0; num<IMAGENO && getline(fin,ImgName); num++)
 {
 cout <<"读入"<<ImgName<<endl;
 ImgName = "E:\\Image\\" + ImgName ;
 
 Image = imread(ImgName);
 resize(Image,tempImage,Size(130,130));
 if (num == 0)
 {
  cvtColor(tempImage, previousImage, CV_BGR2GRAY);
  sprintf(OutName,"E:\\数据集\\目标区域图像\\StudentsArea抠图筛选\\%5d.jpg",num);
  imwrite(OutName,Image);
 }
 if (num > 0)
 {
  cvtColor(tempImage, currentImage, CV_BGR2GRAY);
  absdiff(currentImage,previousImage,resultImage); //帧差法,相减
  threshold(resultImage, resultImage, 20, 255.0, CV_THRESH_BINARY); //二值化,像素值相差大于20则置为255,其余为0
  int counter = 0;
  // 访问mat中的像素
  for (int i=0; i<resultImage.rows; i++)
  {
  uchar *data = resultImage.ptr<uchar>(i); //获取每一行的指针
  for (int j=0;j<resultImage.cols; j++)
  {
   if (data[j] == 255) //访问到像素值
   {
   counter++;
   }   
  }
  }
  if (counter > 4000) //达到阈值的像素数达到一定的数量则保存该图像
  {
  sprintf(OutName,"E:\\Image筛选之后\\%5d.jpg",num);
  imwrite(OutName,Image);
  }
  cvtColor(tempImage, previousImage, CV_BGR2GRAY); 
 } 
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Qt无边框窗口拖拽和阴影的实现

    Qt无边框窗口拖拽和阴影的实现

    自定义窗口控件的无边框,窗口事件由于没有系统自带边框,无法实现拖拽拉伸等事件的处理,本文主要介绍了Qt无边框窗口拖拽和阴影的实现,感兴趣的可以了解一下
    2024-01-01
  • 详解c++中的类型识别

    详解c++中的类型识别

    这篇文章主要介绍了 详解c++中的类型识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • C语言:利用指针编写程序,用梯形法计算给定的定积分实例

    C语言:利用指针编写程序,用梯形法计算给定的定积分实例

    今天小编就为大家分享一篇C语言:利用指针编写程序,用梯形法计算给定的定积分实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • C语言数据的存储详解

    C语言数据的存储详解

    本文详细讲解了C语言数据的存储,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • C语言 CRITICAL_SECTION用法案例详解

    C语言 CRITICAL_SECTION用法案例详解

    这篇文章主要介绍了C语言 CRITICAL_SECTION用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • 如何写出优美的C语言代码

    如何写出优美的C语言代码

    今天小编就为大家分享一篇关于如何写出优美的C语言代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • C语言实现BMP图像开运算处理

    C语言实现BMP图像开运算处理

    这篇文章主要为大家详细介绍了C语言实现BMP图像开运算处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C语言实现数字游戏

    C语言实现数字游戏

    这篇文章主要为大家详细介绍了C语言实现数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • C语言实现简单三子棋小游戏

    C语言实现简单三子棋小游戏

    这篇文章主要为大家详细介绍了C语言实现简单三子棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 简述C语言中system()函数与vfork()函数的使用方法

    简述C语言中system()函数与vfork()函数的使用方法

    这篇文章主要介绍了简述C语言中system()函数与vfork()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08

最新评论