使用ROI的方法剪切图像

简介:

第一步:将需要剪切的图像图像不部分设置为ROI

cvSetImageROI(src , cvRect(x,y,width,height));

 

第二步:新建一个与需要剪切的图像部分同样大小的新图像

cvCreateImage(cvSize(width,height),IPL_DEPTH,nchannels);

 

第三步:将源图像复制到新建的图像中

cvCopy(src,dst,0);

 

第四步:释放ROI区域

cvResetIamgeROI(src);


只释放显示分配空间的图片指针。


#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>

using namespace cv;
using namespace std;


int main()
{
	Mat img = imread("001.jpg");

	IplImage * src=&(IplImage)img;


	cvSetImageROI(src,cvRect(0,0,0.5*src->width,0.5*src->height));

	IplImage * dst = cvCreateImage(cvSize(0.5*src->width,0.5*src->height),
		IPL_DEPTH_8U,
		src->nChannels);


	cvCopy(src,dst,0);
	cvResetImageROI(src);


	
	cvNamedWindow("操作后的图像",1);
	cvShowImage("操作后的图像",dst);

	waitKey();

	cvDestroyWindow("操作后的图像");

	cvReleaseImage(&dst);

	return 0;
}


运行结果:





另外再粘贴一个不错的代码:

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <stdio.h>
IplImage* src;
IplImage* dst;
int main(int argc , char** argv )
{
   if(argv[1] == NULL)
       return 0;
   else 
  {
	src = cvLoadImage(argv[1],1);
	if(!src)
		fatal_error("unable to load image from %s", argv[1]);
	cvNamedWindow("源图像",1);
	cvShowImage("源图像",src);
	cvSetImageROI(src,cvRect(0,0,0.5*src->width,0.5*src->height));
	dst = cvCreateImage(cvSize(0.5*src->width,0.5*src->height),
			IPL_DEPTH_8U,
			src->nChannels);
	cvCopy(src,dst,0);
	cvResetImageROI(src);
	
	cvNamedWindow("操作后的图像",1);
	cvShowImage("操作后的图像",dst);
	cvDestroyWindow("操作后的图像");
	cvDestroyWindow("源图像");
  }
   cvReleaseImage(&src);
   cvReleaseImage(&dst);
   return 0;
}



相关文章
|
JSON 数据格式 Python
对Labelme标注图像,进行90、180、270的旋转,实现标注数据的扩充。
对Labelme标注图像,进行90、180、270的旋转,实现标注数据的扩充。
1080 0
对Labelme标注图像,进行90、180、270的旋转,实现标注数据的扩充。
|
5月前
|
存储 算法 Python
查找图像轮廓
【6月更文挑战第11天】查找图像轮廓。
58 3
|
5月前
|
算法 Python
扭曲图像 鼻子拉伸
【6月更文挑战第28天】
29 0
|
6月前
|
算法 计算机视觉
缩放图像
【5月更文挑战第12天】缩放图像。
45 5
|
6月前
|
计算机视觉 索引
【OpenCV】—ROI区域图像叠加&图像混合
【OpenCV】—ROI区域图像叠加&图像混合
|
6月前
|
算法 计算机视觉 异构计算
yolo如何画框、如何变换目标检测框的颜色和粗细、如何运行detect脚本
yolo如何画框、如何变换目标检测框的颜色和粗细、如何运行detect脚本
|
C++ 计算机视觉
C++-图像目标区裁剪ImageCropping
C++-图像目标区裁剪ImageCropping
|
C# 计算机视觉
C#使用OpenCV剪切图像中的圆形和矩形
本文主要介绍如何使用OpenCV剪切图像中的圆形和矩形。
C#使用OpenCV剪切图像中的圆形和矩形
|
编解码 计算机视觉
CV13 图像分辨率操作(图像金字塔与resize()函数)
其中,高斯核卷积运算就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值(券种不同)经过加权平均后得到。常见的 33与 55 高斯核(CV9 2D卷积与图像滤波)
208 0