• [原]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;  
    }  

  • 相关阅读:
    android获得屏幕高度和宽度
    Android中RelativeLayout各个属性的含义
    Android JNI知识简介
    Android结束进程方法
    android开发中的图片资源问题
    android framework下public.xml中添加资源问题
    I'm back
    test,exec,match,replace方法区别 正则
    fiddler抓包工具 https抓取 ios手机端抓取
    前端优化方案
  • 原文地址:https://www.cnblogs.com/fag888/p/5789108.html
Copyright © 2020-2023  润新知