在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 ...
随机推荐
- supdf
https://github.com/sumatrapdfreader/sumatrapdf/tree/master/src c++ java
- [易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates]
[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates] 实用知识 装箱crates 我们今天来讲讲装箱技术crates. 什么是crates? 英语翻译是: 英 [kre ...
- 微信小程序 点击事件 传递参数
wxml: data-参数名="值" bindtap="函数名" <view class="buy-button {{cap_select == ...
- [uboot] (第四章)uboot流程——uboot编译流程 (转)
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例 [uboot] uboot流程系列:[project X] tiny210(s5pv210)上电启动流程(B ...
- Head First设计模式 1 设计模式入门 策略模式 观察者模式
关于基本的OOP特征: OOP的几大特征是抽象 继承 封装 多态. 我们把共同的部分抽象出来作为抽象类的存在,使用继承和接口来实现多态,然后私有的部分封装起来.一定程度上说,这些概念都是简单的设计模式 ...
- @EqualsAndHashCode
1.@Data注解包含了这些注解 * @see Getter * @see Setter * @see RequiredArgsConstructor * @see ToString * @see E ...
- buunctf@reverse2
- GridControl的列DisplayFormat自定义方法
定义格式化的类: public class EnableFormat : IFormatProvider, ICustomFormatter { public object GetFormat(Typ ...
- 【leetcode】341. Flatten Nested List Iterator
题目如下: Given a nested list of integers, implement an iterator to flatten it. Each element is either a ...
- {"errcode":40029,"errmsg":"invalid code, hints: [ req_id: LEgfftXIRa-BU8_9 ]"}
{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: LEgfftXIRa-BU8_9 ...