使用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;
}
时间: 2025-01-31 02:00:57

使用ROI的方法剪切图像的相关文章

HTML5使用drawImage()方法绘制图像

 一.绘制图像 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本. drawImage(image,x,y) : 在canvas中(x,y)处绘制图片. drawImage(image,x,y,width,height) : 在canvas中(x,y)处绘制图片,并将其缩放到指定的宽度和高度. drawImage(image,sourceX,sourceY,sourceWidth,sourceHeight,x,y,width,height) : 从图片中切割出一个矩形区

图像 坐标-VB GetDIBits 方法读取图像像素问题

问题描述 VB GetDIBits 方法读取图像像素问题 GetDIBits(Picture1.hdc, Picture1.Picture.Handle, 0&, iHeight, bits(0, 0, 0), bi24BitInfo, 0&) 就是用DIB方法获取图片像素坐标很困乱,就横坐标很混乱,纵坐标没问题,得到的颜色点坐标左边都不是从0开始的 例如: (5,8) (6,8) (7,8) (8,8) (0,8) (1,8) (2,8) (3,8) (4,8) (6,7) (7,7)

android图像绘制(一)多种方法做图像镜像_Android

在android中做图像镜像有很多方法,今天算是学习了! 两种方法如下: 复制代码 代码如下: //方法一 Matrix matrix = new Matrix(); matrix.postScale(leftOrRight, 1, bmpW/2, bmpH/2);//前两个是xy变换,后两个是对称轴中心点 matrix.postTranslate(x, y); canvas.drawBitmap(bmpLuffy[0], matrix, paint); //方法二 // canvas.save

android图像绘制(一)多种方法做图像镜像

在android中做图像镜像有很多方法,今天算是学习了! 两种方法如下: 复制代码 代码如下: //方法一 Matrix matrix = new Matrix(); matrix.postScale(leftOrRight, 1, bmpW/2, bmpH/2);//前两个是xy变换,后两个是对称轴中心点 matrix.postTranslate(x, y); canvas.drawBitmap(bmpLuffy[0], matrix, paint); //方法二 // canvas.save

视频图像分割研究与实现(二):常见图像和视频分割方法概述

常见图像和视频分割方法概述 图像与视频分割是指按照一定的原则将图像或视频序列分为若干个特定的.具有独特性质的部分或子集,并提取出感兴趣的目标,便于更高层次的分析和理解,因此图像与视频分割是目标特征提取.识别与跟踪的基础. 图像分割方法主要包括: 1).基于边缘的分割方法 2).基于阈值的分割方法 3).基于区域的分割方法 4).基于形态学分水岭的分割方法 5).基于聚类的分割方法 6).基于图论的分割方法 7).基于偏微分的分割方法 8).基于融合的分割方法 视频分割方法主要包括: 9).基于时

android中圆角图像生成方法_Android

本文实例讲述了android中圆角图像生成方法.分享给大家供大家参考.具体分析如下: 在android开发中为了美观,常常要求ImageView中显示出圆角图像的效果,这个如何实现? 这里总结了网上的最优方法:将图像处理成圆角,然后在加载给ImageView显示,代码如下: public Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) { Bitmap output = Bitmap.createBitmap(bitmap.get

Android中3种图片压缩处理方法

  这篇文章主要介绍了Android中3种图片压缩处理方法,本文讲解了质量压缩方法.获得缩略图.图片缩放三种方法并分别给出示例代码,需要的朋友可以参考下 Android中图片的存在形式: 1:文件形式:二进制形式存在与硬盘中. 2:流的形式:二进制形式存在与内存中. 3:Bitmap的形式 三种形式的区别: 文件形式和流的形式:对图片体积大小并没有影响.也就是说,如果你手机SD卡上的图片通过流的形式读到内存中,在内存中的大小也是原图的大小. 注意:不是Bitmap的形式. Bitmap的形式:图

用jquery插件的图片剪切上传功能

   为了使用户能自定义个人头像,需要提供一个对上传图片的截图功能,当前很多网站特别是SNS类网站都提供这样的功能,非常实用.主要实现的形式有两种,一种是flash截图,另一种就是javascript截图,两种方法各有秋千,关于Flash截图可以参考一下UcHome程序中头像上传功能,但这不是我要讨论的话题,我这里主要是如何实现javascript截图,利用jQuery的imgAreaSelect插件,轻松实现自定义头像[avatar]javascript截图功能 首先,利用的是jquery上传

推荐十大优化页面加载速度的方法

许多研究发现,页面速度和访客的滞留时间,跳出率以及收入都有直接的关系.另外,谷歌的排名算法中也把页面加载速度作为其中一项考 虑因素.因此,你网站的页面加载时间是至关重要的.从访问者的角度看,测试你的浏览器速度的一个很好的方法是清除你的浏览器缓存,然后加载页面. 小于2秒的页载入时间被认为是优良的,而且高达4秒是可接受的.而大于5秒的页面载入时间不仅影响你网站的搜索引擎排名,还会严重影响用户体验.这里列出了10种方法,可以快速提升你网站的性能. 1. 优化图像 图像对于吸引访客的关注是很重要的.但