在Opencv中将一幅图像均分成M* N个小图像
std::vector<std::vector<Mat> > partitionImage(Mat&src,int rows,int cols)
函数中有三个输入参数,第1个src是原图像;第2个参数rows是网格的行数,第三个参数cols是网格的列数;返回的是二维矢量数组。
///*13. 图像的二维分割,即将图像分割成rows行、cols列的小格子—array[rows][cols],
/// 保存在二维矢量vector中,
std::vector<std::vector<Mat> > partitionImage(Mat&src,int rows,int cols)
{
std::vector<std::vector<Mat> > array(rows,std::vector<Mat>(cols)); int irows=src.rows,icols=src.cols;//原图像的行数、列数
int dr=irows/rows,dc=icols/cols;//分割后的小块图像的行数、列数
//分割行、列数与图像的行列数不能整除时,有效图像偏移delt_x、delt_y。
/// 也就是将不能整除的余数像素丢弃,丢弃的方法就是,在图像上、下、左右
/// 各删除余数一半的像素。比如行余数为4,则在图像顶部、底部分别删除2行像素。
int delt_y=(irows%rows)/,delt_x=(icols%cols)/;
for(int i=;i<rows;i++)
{
for(int j=;j<cols;j++)
{
int x=j*dc+delt_x,y=i*dr+delt_y;
array[i][j]=src(cv::Rect(x,y,dc,dr));
}
}
return array;
}
测试主程序如下:
int main()
{
Mat img=imread("D:/CodeWork/MyImage/lena.jpg",);
vector<vector<Mat> > parts=partitionImage(img,,);
imshow("parts 00",parts[][]);
imshow("parts 01",parts[][]);
imshow("parts 02",parts[][]); imshow("rogin img",img);
waitKey();
return ;
}
输出结果如下:

下面是分割后的图像阵列:

在Opencv中将一幅图像均分成M* N个小图像的更多相关文章
- Opencv中将CvMat转为IplImage
Opencv中将CvMat转为IplImage,并在内存获得起头指针,而不用cvSaveImage(),贴上代码 IplImage * imgg = NULL; imgg = cvCreateImag ...
- OpenCV探索之路(二十五):制作简易的图像标注小工具
搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注.图像标注是件很枯燥又很 ...
- python将整数均分成N等分
在python中,需要将整数均分成N等分.python divide integers N equal parts sum # 拆分整数 def split_integer(m, n): assert ...
- 将一个list均分成n个list
/** * 将一个list均分成n个list,主要通过偏移量来实现的 * @param source * @return */ public <T> List<List<T&g ...
- 图像金字塔(pyramid)与 SIFT 图像特征提取(feature extractor)
David Lowe(SIFT 的提出者) 0. 图像金字塔变换(matlab) matlab 对图像金字塔变换接口的支持(impyramid),十分简单好用. 其支持在reduce和expand两种 ...
- Opencv实现两幅图像融合
实现两幅图像线性(不同系数下)的融合涉及到Opencv中两个关键的方法,addWeighted()和createTrackbar() addWeighted方法: 函数原型: void addWeig ...
- OpenCv实现两幅图像的拼接
直接贴上源码 来源:http://www.myexception.cn/image/1498389.html 实验效果 Left.jpg right.jpg ImageMatch.jpg #inclu ...
- OpenCV --- 实现两幅图像并排合并(ROI)
Mat img1 = imread("1.png"); Mat img2 = imread("2.png"); int height = img1.rows; ...
- OpenCV 对两幅图像求和(求混合(blending))
#include <cv.h> #include <highgui.h> #include <iostream> using namespace cv; int m ...
随机推荐
- Summer training round2 #5 (Training #21)
A:正着DFS一次处理出每个节点有多少个优先级比他低的(包括自己)作为值v[i] 求A B 再反着DFS求优先级比自己高的求C #include <bits/stdc++.h> #incl ...
- 人人商城返回Json格式的数据
人人商城返回Json格式的数据 1.找到该插件对应的 core/mobile 路径 2.新建一个 api.php 文件 <?php header('Content-Type:applicatio ...
- 开发一个简单 ef+dapper 数据操作
新建一个net core 2项目
- socket 异步 发送 接收 数据
Socket socketClints = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); / ...
- TTTTTTTTTTTTTTTTTTT CF 银行转账 图论 智商题
C. Money Transfers time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- JavaWeb_(SSH论坛)_四、页面显示
基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 帖子表与回复表 ...
- 关于JavaScript的内存机制
一.背景 var a = 20; var b = 'abc'; var c = true; var d = { m: 20 } 因为JavaScript具有自动垃圾回收机制,所以对于前端开发来说,内存 ...
- 自动化部署脚本--linux执行sh脚本
自动化部署脚本文件目录: 运行主程序:./install.sh #!/bin/bash SCRIPTPATH=$(cd "$(dirname "$0")"; p ...
- CSS Selectors
CSS selectors are used to "find" (or select) HTML elements based on their element name, id ...
- 第六周总结&实验报告四
这周是放国庆节的假,所有没有进行深入的学习,只是写了个实验的题目,也发现了自己在基础上还是要加强学习. 实验四 类的继承 一. 实验目的 (1) 掌握类的继承方法: (2) 变量的继承和覆盖,方法的继 ...