[原]opencv图像裁剪

opencv图像裁剪


在图像处理中,我们经常根据需要截取图像中某一区域做处理,而不是针对整幅图像,这样会提高运算速度。当然,opencv有现成的截取函数供我们调用,但是考虑的运行平台不同(DSP芯片移植等),直接调用函数不现实。小生针对这一情况做了以下工作,不调用相关函数,截取到指定位置指定大小的图像,希望大家批评指正。

c++代码:

#include "stdafx.h"  
#include "cv.h"  
#include "highgui.h"  
  
int myCutOut(IplImage* src, IplImage* dst, int x, int y, int w, int h)  
{  
    //x,y为矩形框左上角点坐标,w为宽度,h为高度  
    int width_src = src->widthStep;  
    int height_src = src->height;  
    byte* gray_src = (byte*)src -> imageData;  
  
    int width_dst = dst ->widthStep;  
    int height_dst = dst ->height;  
    byte* gray_dst = (byte*)dst -> imageData;  
  
    for (int i = 0; i < height_dst; i++)  
    {  
        for (int j = 0; j < width_dst; j++)  
        {  
            gray_dst[i * width_dst + j] = gray_src[(y + i) * width_src + x + j];  
        }  
    }  
  
    return 0;  
}  
  
int _tmain(int argc, _TCHAR* argv[])  
{  
    IplImage* Img_src = cvLoadImage("lena.bmp", -1);   
    //目标大小为150x50  
    IplImage* Img_dst = cvCreateImage(cvSize(150,50),IPL_DEPTH_8U,Img_src->nChannels);  
    //起始点坐标为(250,250)  
    myCutOut(Img_src, Img_dst, 250, 250, Img_dst -> width, Img_dst -> height);  
  
    cvShowImage("src", Img_src);  
    cvShowImage("cutout", Img_dst);  
    cvWaitKey(0);  
  
    return 0;  
}  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值