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

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

  1. 函数实现
  2. #ifndef SLIDINGWND_H_
  3. #define SLIDINGWND_H_
  4. //简单的滑动窗口的形成
  5. #include<iostream>
  6. #include<opencv2\opencv.hpp>
  7. using namespace std;
  8. using namespace cv;
  9. //基于矩形窗口的图像滑动窗口操作,返回值为滑动窗口的数目
  10. //@src 输入图像
  11. //@wnd 输出结果
  12. //@wndSize 滑动窗口的大小
  13. //@ x_percent 滑动窗口在x方向步长的百分比,x_step=x_percent*wndSize.width
  14. //@ y_percent 滑动窗口在y方向步长的百分比,y_step=y_percent*wndSize.height
  15. int slidingWnd(Mat& src, vector<Mat>& wnd, Size& wndSize, double x_percent, double y_percent)
  16. {
  17. int count = 0; //记录滑动窗口的数目
  18. int x_step = cvCeil(x_percent*wndSize.width);
  19. int y_step = cvCeil(y_percent*wndSize.height);
  20. /*String wndName = "F:\\wnd\\";
  21. char temp[1000];*/
  22. int64 count1 = getTickCount();
  23. double freq = getTickFrequency();
  24. //利用窗口对图像进行遍历
  25. for (int i = 0; i < src.cols- wndSize.width; i+=y_step)
  26. {
  27. for (int j = 0; j < src.rows- wndSize.height; j+=x_step)
  28. {
  29. Rect roi(Point(j, i), wndSize);
  30. Mat ROI = src(roi);
  31. wnd.push_back(ROI);
  32. count++;
  33. }
  34. }
  35. int64 count2 = getTickCount();
  36. double time = (count2 - count1) / freq;
  37. cout << "Time=" << time * 100 << "ms"<<endl;
  38. cout << count << endl;
  39. return count;
  40. }
  1. main.cpp
  2. #include<iostream>
  3. #include<opencv2\opencv.hpp>
  4. #include"slidingWnd.h"
  5. using namespace std;
  6. using namespace cv;
  7. void main()
  8. {
  9. String imgName = "F:\\lena_gray.jpg";
  10. Mat src = imread(imgName);
  11. cvtColor(src, src, COLOR_RGB2GRAY);
  12. vector<Mat> wnd;
  13. int count=slidingWnd(src, wnd, Size(30, 30),0.3,0.3);
  14. imshow("src", src);
  15. waitKey(0);

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

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

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

  1. clc;
  2. clear all;
  3. maindir = 'D:\MyDataSet\airplane\wheel\JPEGImages';
  4. sundir = fullfile( maindir, '*.jpg' );
  5. images = dir(sundir);% 在这个子文件夹下找后缀为jpg的文件
  6. % 遍历每张图片
  7. for j = 1 : length( images )
  8. imagepath = fullfile( maindir,images( j ).name )
  9. imgdata = imread( imagepath ); % 这里进行你的读取操作
  10. new_folder = strcat('F:\matlab\tools\output\',num2str(j))
  11. mkdir(new_folder);
  12. %num1,num2是你要设定的矩形框长和宽
  13. num1=375;
  14. num2=500;
  15. [m,n,ch]=size(imgdata);
  16. mm=m-num1;
  17. nn=n-num2;
  18. filenum=1;
  19. for k=1:100:mm
  20. for kk=1:100:nn
  21. B=imgdata(k:k+num1,kk:kk+num2,:)
  22. imshow(B);
  23. % file = ['.\output\',num2str(floor((k+kk-1)/10)),'.jpg'];
  24. file = [new_folder,'\',num2str(filenum),'.jpg'];
  25. filenum=filenum+1;
  26. imwrite(B,file);
  27. if (kk+num2)>=n
  28. break;
  29. end
  30. if (k+num1)>=m
  31. break;
  32. end
  33. end
  34. end
  35. end
  36. 原文链接: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. QQ是怎样实现好友桌面快捷方式的?

    QQ是怎样实现好友桌面快捷方式的? 不知道什么时候,QQ推出了好友桌面快捷方式.方便用户和最常保持联系的好友一键联系.核心功能一:若QQ启动了.则双击快捷方式直接打开好友聊天界面:核心功能二:若QQ未 ...

  2. js面试题--------JS中数字和字符,布尔类型相加相减问题

    JS中数字和字符相加相减问题 <html lang="en"> <head> <meta charset="utf-8" /> ...

  3. ExtJs 给grid某一单元格重新赋值

    // 司机,搬运工提成 var commissionMoney = (waybillsFtQty * commissionMoneyRatio / personCount).toFixed(2); / ...

  4. Harry Potter and the Order of the Phoenix

    书名:Harry Potter and the Order of the Phoenix 作者:J.K. Rowling 篇幅: 870P 蓝思值:950L 用时: 22天 工具: 有道词典 [透析成 ...

  5. oc51--循环retain

    // main.m // 循环retain #import <Foundation/Foundation.h> #import "Person.h" #import & ...

  6. Android 系统开机logo的修改【转】

    本文转载自:http://blog.csdn.net/yandongqiangZHRJ/article/details/8585273 看到了好几个修改logo的博文,但是说的不是很清楚,在这里亲手送 ...

  7. C# 验证数字的正则表达式集

    验证数字的正则表达式集 博客分类: 正则 正则表达式 验证数字的正则表达式集 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d ...

  8. 一个简单的JS日期挂历脚本

    分享一个JS脚本做的日期挂历,在需要的时候可以引入你的程序. 如需单独引入这个脚本,请将它保存在一个文件中然后引入它:如这样 <script type="text/javascript ...

  9. 78.员工个人信息保镖页面 Extjs 页面

    1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...

  10. Iframe 用法的详细讲解

    1转自:https://blog.csdn.net/judyge/article/details/51786064 zIframe 用法的详细讲解 把iframe解释成“浏览器中的浏览器“很是恰当 & ...