转自1:http://blog.csdn.net/lejun2011/article/details/7599912
转自2:http://blog.csdn.net/dujian996099665/article/details/8897077
为了提取到一幅图像中感兴趣的区域并裁剪出来作为一幅新图像的方法:
1、利用void cvSetImageROI( IplImage* image, CvRect rect )函数设置感兴趣的区域;
IplImage* src = https://www.it610.com/article/cvLoadImage(“D://test.jpg”,1);
cvSetImageROI(src,cvRect(0,0,0.5*src->width,0.5*src->height));
【图像处理|OpenCV 剪切矩形区域】 2、创建一个与感兴趣区域同样大小的新图像;
IplImage* dst = cvCreateImage(cvSize(0.5*src->width,0.5*src->height),src->depth,src->nchannels);
3、利用void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL )函数将设置了感兴趣区域的图像复制到新图像;
cvCopy(src,dst,0);
4、释放感兴趣区域。
cvResetImageROI(src);
代码如下:
// Cut_image.cpp : 定义控制台应用程序的入口点。
//
/***********************************************************************
* OpenCV 2.4.4 测试例程
***********************************************************************/
#include "stdafx.h"
#include #include
#include
#include
#include
using namespace std;
using namespace cv;
//剪切图片为m * n 块
void Cut_img(Mat src_img,int m,int n,Vector ceil_img){int t = m * n;
int height = src_img.rows;
int width= src_img.cols;
int ceil_height = height/m;
int ceil_width= width/n;
Mat roi_img,tmp_img;
Point p1,p2;
for(int i = 0;
i imgs,int n){//do something
}int _tmain(int argc, _TCHAR* argv[])
{
Mat img = imread("D://input//lena.jpg",1);
imshow("src img",img);
int m = 3;
int n = 3;
Vector ceil_img = m*n;
Cut_img(img,m,n,ceil_img);
waitKey();
return 0;
}
推荐阅读
- 人脸识别|【人脸识别系列】| 实现自动化妆
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- opencv|图像处理之椒盐噪声的添加与去除
- 人脸识别|【人脸识别系列】| 实现人脸截图保存并编写128维特征向量
- opencv|网络爬虫入门练习
- OpenCV|【OpenCV 完整例程】89. 带阻滤波器的传递函数
- OpenCV|【OpenCV 完整例程】90. 频率域陷波滤波器
- OpenCV|【OpenCV 完整例程】22. 图像添加非中文文字
- OpenCV|【OpenCV 完整例程】91. 高斯噪声、瑞利噪声、爱尔兰噪声
- opencv|python+opencv车道线,实线虚线的检测