1.利用opencv实现图像滑动窗口操作

功能:利用opencv实现图像滑动窗口操作(即利用已知尺寸的窗口遍历整幅图像,形成许多子图像) 
vs2015+opencv3.1 
2016.10

函数实现

#ifndef SLIDINGWND_H_
#define SLIDINGWND_H_
//简单的滑动窗口的形成
#include<iostream>
#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;
//基于矩形窗口的图像滑动窗口操作,返回值为滑动窗口的数目
//@src 输入图像
//@wnd 输出结果
//@wndSize 滑动窗口的大小
//@ x_percent 滑动窗口在x方向步长的百分比,x_step=x_percent*wndSize.width
//@ y_percent 滑动窗口在y方向步长的百分比,y_step=y_percent*wndSize.height
int slidingWnd(Mat& src, vector<Mat>& wnd, Size& wndSize, double x_percent, double y_percent)
{
int count = 0; //记录滑动窗口的数目
int x_step = cvCeil(x_percent*wndSize.width);
int y_step = cvCeil(y_percent*wndSize.height);
/*String wndName = "F:\\wnd\\";
char temp[1000];*/
int64 count1 = getTickCount();
double freq = getTickFrequency();
//利用窗口对图像进行遍历
for (int i = 0; i < src.cols- wndSize.width; i+=y_step)
{
for (int j = 0; j < src.rows- wndSize.height; j+=x_step)
{
Rect roi(Point(j, i), wndSize);
Mat ROI = src(roi);
wnd.push_back(ROI);
count++;
}
}
int64 count2 = getTickCount();
double time = (count2 - count1) / freq;
cout << "Time=" << time * 100 << "ms"<<endl;
cout << count << endl;
return count;
}
main.cpp

#include<iostream>
#include<opencv2\opencv.hpp>
#include"slidingWnd.h"
using namespace std;
using namespace cv; void main()
{
String imgName = "F:\\lena_gray.jpg";
Mat src = imread(imgName);
cvtColor(src, src, COLOR_RGB2GRAY); vector<Mat> wnd;
int count=slidingWnd(src, wnd, Size(30, 30),0.3,0.3);
imshow("src", src);
waitKey(0);

原文链接:http://blog.csdn.net/jiamuju84/article/details/52893320

2.matlab滑动窗口截取图片并保存

该代码的作用是对图片进行滑动截取保存

clc;
clear all; maindir = 'D:\MyDataSet\airplane\wheel\JPEGImages';
sundir = fullfile( maindir, '*.jpg' );
images = dir(sundir);% 在这个子文件夹下找后缀为jpg的文件
% 遍历每张图片
for j = 1 : length( images )
imagepath = fullfile( maindir,images( j ).name )
imgdata = imread( imagepath ); % 这里进行你的读取操作
new_folder = strcat('F:\matlab\tools\output\',num2str(j))
mkdir(new_folder); %num1,num2是你要设定的矩形框长和宽
num1=375;
num2=500;
[m,n,ch]=size(imgdata);
mm=m-num1;
nn=n-num2;
filenum=1;
for k=1:100:mm
for kk=1:100:nn
B=imgdata(k:k+num1,kk:kk+num2,:)
imshow(B);
% file = ['.\output\',num2str(floor((k+kk-1)/10)),'.jpg'];
file = [new_folder,'\',num2str(filenum),'.jpg'];
filenum=filenum+1;
imwrite(B,file);
if (kk+num2)>=n
break;
end
if (k+num1)>=m
break;
end
end
end
end 原文链接:http://blog.csdn.net/run_it_faraway/article/details/76862506

图像滑动窗口 利用opencv和matlab的更多相关文章

  1. opencv 模板匹配与滑动窗口(单匹配) (多匹配)

    1单匹配: 测试图片:   code: #include <opencv\cv.h> #include <opencv\highgui.h> #include <open ...

  2. 利用OpenCV给图像添加中文标注

    利用OpenCV给图像添加中文标注 : 参考:http://blog.sina.com.cn/s/blog_6bbd2dd101012dbh.html  和https://blog.csdn.net/ ...

  3. 『Python』图像金字塔、滑动窗口和非极大值抑制实现

    图像金字塔 1.在从cv2.resize中,传入参数时先列后行的 2.使用了python中的生成器,调用时使用for i in pyramid即可 3.scaleFactor是缩放因子,需要保证缩放后 ...

  4. Visual Studio 控制台应用程序 同时使用OpenCV和matlab mat文件操作

    matalb具有灵活的图像处理,代码编写起来简洁而高效.而OpenCV具有很多成熟的计算机视觉算法,能够处理很多实时的识别处理等问题,而且代码运行起来效率很高.所以如何结合两者之间的优点,是让很多学术 ...

  5. python 图片滑动窗口

    METHOD #1: No smooth, just scaling. def pyramid(image, scale=1.5, minSize=(30, 30)): # yield the ori ...

  6. tcp协议头窗口,滑动窗口,流控制,拥塞控制关系

    参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 & 慢启动 快恢复 拥塞避免 http://b ...

  7. 图像卷积、相关以及在MATLAB中的操作

    图像卷积.相关以及在MATLAB中的操作 2016年7月11日 20:34:35, By ChrisZZ 区分卷积和相关 图像处理中常常需要用一个滤波器做空间滤波操作.空间滤波操作有时候也被叫做卷积滤 ...

  8. CodeForces 701C They Are Everywhere (滑动窗口)

    题目链接:http://codeforces.com/problemset/problem/701/C 题意:找到字符串中能包含所有元素的最短字符串长度. 利用“滑动窗口”解题 解题思路: 1. 遍历 ...

  9. tcp的精髓:滑动窗口

    TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部分更多, ...

随机推荐

  1. @Component注解

    @component (把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="  " class="   "/>)泛指各 ...

  2. 【Discuz】去除版权信息,标题栏与底部改动

    这篇文章尽管是介绍怎么把Discuz!的版权信息怎么搞得无影无踪,可是还是建议在不影响论坛视觉效果的情况下,保留Discuz的版权信息,毕竟它为我奉献了一个这么出色的开源论坛的phpproject.主 ...

  3. springboot-quartz普通任务与可传参任务

    两者区别与作用: 普通任务:总调度(SchedulerFactoryBean)--> 定时调度器(CronTriggerFactoryBean) --> 调度明细自定义执行方法bean(M ...

  4. 浅谈EL与JSTL

    讲道理,自己在博大精深的Java世界里还只是一个很小很小的菜鸟.处于成长与学习之中,但学习一个漫长的过程.尤其对于那些知识点我觉得总结是尤为重要的.反正在我看来这段时间里虽然过了很多知识但却是一脸懵逼 ...

  5. C# 文件的一些基本操作(转)//用C#读写ini配置文件

    C# 文件的一些基本操作 2009-07-19  来自:博客园  字体大小:[大 中 小] 摘要:介绍C#对文件的一些基本操作,读写等. using System;using System.IO;us ...

  6. Google Chrome调试常用快捷键

    Ctrl+Shift+I调出开发者工具 Ctrl+R刷新(界面显示不清楚,刷新后变清楚)

  7. RecastNavigation(3D场景建模、网格导航)

    一.RecastNavigation详解 RecastNavigation定义: RecastNavigation是一个导航寻路工具集,使用邻接的凸多边形集合描述一个3D场景,A*寻路算法使3D场景的 ...

  8. Promise-js异步加载解决方案

    范例: var p = new Promise(function(resolve, reject){ //做一些异步操作 setTimeout(function(){ console.log('执行完 ...

  9. 利用windbg获取dump的dll文件

    根据堆栈对应的地址查找其对应的Module ID,然后将对应的Module保存. !IP2MD 命令从托管函数中获取 MethodDesc 结构地址. !dumpmodule 1caa50 下面的命令 ...

  10. Spring Boot (10) mybatis三种动态sql

    脚本SQL xml配置方式见mybatis讲解,下面是用<script>的方式把它照搬过来,用注解来实现.适于xml配置转换到注解配置 @Select("<script&g ...