1.涉及函数
1.1 Range()
- 函数功能
选定区域 - 具体定义
inline Range::Range(int _start, int _end)
: start(_start), end(_end) {}
- 相关参数
int _start – 范围起点,包含该点
int _end – 范围结束点,不包含该店 - 返回值
Range – 设定的范围
1.2 operator()
- 函数功能
获取图像中的指定区域,该函数为Mat类的一个重载运算符。 - 具体定义
inline Mat Mat::operator()( Range _rowRange, Range _colRange ) const
{
return Mat(*this, _rowRange, _colRange);
}
- 相关参数
Range _rowRange – 扣取行范围
iRange _colRange – 扣取列范围 - 返回值
Mat – 包含选定行内容的图像矩阵
注意:
该函数返回的图像矩阵为原始图像的浅拷贝,改变目标图像矩阵,同样会改变原始图像。
1.3 clone
- 函数功能
将图像内容拷贝至目标图像矩阵,该函数为Mat类的一个方法。 - 具体定义
inline Mat Mat::clone() const
{
Mat m;
copyTo(m);
return m;
}
- 相关参数
无 - 返回值
Mat – 拷贝后的图像
1.3 colRange
- 函数功能
将当前图像内容拷贝至目标图像,该函数为Mat类的一个方法。 - 具体定义
void copyTo( OutputArray m ) const;
- 相关参数
OutputArray m – 目标图像 - 返回值
无
2.代码实例
- 代码说明
本例主要展示如何对两幅图像进行拼接操作。 - 测试平台
1.开发语言:C++
2.开发工具:VS2015
3.操作系统:Win7 X64 - 具体代码
#include <iostream>
using namespace std;
#include "cv.h"
#include "opencv2\opencv.hpp"
using namespace cv;
#if _DEBUG
#pragma comment(lib,"opencv_world340d.lib")
#else
#pragma comment(lib,"opencv_world340.lib")
#endif
int main()
{
Mat src = imread("D:\\OpencvTest\\lena.jpg");
if (src.data != NULL)
{
Mat tempRoiImg;
//扣取图像右下角部分
tempRoiImg = src(Range(src.cols/2,src.cols), Range(src.rows/2, src.rows));
//为了防止对选定图像的操作影响原始图像,所以进行一次图像克隆操作
Mat finalRoiImg = tempRoiImg.clone();
imshow("原始图像", src);
imshow("右下角图像", finalRoiImg);
imwrite("D:\\OpencvTest\\roi.jpg", finalRoiImg);
cvWaitKey(0);
}
else
{
cout << "图片加载失败,请检查文件是否存在!" << endl;
}
getchar();
return 0;
}
- 输出截图
栏目导航
上一篇:Opencv学习笔记(五) – 图像的拼接
下一篇:Opencv学习笔记(七) – 图像的灰度化