zoukankan      html  css  js  c++  java
  • 【OpenCV学习】子区域处理

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

    #pragma comment( lib, "cxcore.lib" ) 
    #pragma comment( lib, "cv.lib" ) 
    #pragma comment( lib, "highgui.lib" ) 
    #include <cv.h> 
    #include <highgui.h> 
    #include <stdio.h> 
    int main(int argc, char** argv) 
    { 
     
        IplImage *src,*sub_img; 
        cvNamedWindow("Example3_13_pre", CV_WINDOW_AUTOSIZE); 
        cvNamedWindow("Example3_13_post", CV_WINDOW_AUTOSIZE);   
        src = cvLoadImage("dog.jpg"); 
        int x = 150; 
        int y = 300; 
        int width = 200; 
        int height = 200; 
        int add = 150; 
        //子窗口的初始化 
        sub_img =  cvCreateImageHeader(cvSize(width, height),src->depth,src->nChannels); 
        sub_img->origin = src->origin;      
        //子窗口的widthStep和主窗口的widthStep相等 
        sub_img->widthStep = src->widthStep; 
        //注意这个公式,子窗口的图像数据指针首地址指向了主窗口中由子窗口左上角坐标x,y指定的相应位置 
        sub_img->imageData = src->imageData + y * src->widthStep  + x * src->nChannels; 
        cvShowImage( "Example3_13_pre", src);     
        cvAddS(sub_img, cvScalar(add),sub_img); 
        cvShowImage( "Example3_13_post",src); 
        cvWaitKey(); 
        cvReleaseImage( &src ); 
        //释放子窗口的头部资源 
        cvReleaseImageHeader(&sub_img); 
        cvDestroyWindow("Example3_13_pre"); 
        cvDestroyWindow("Example3_13_post");    
        return 0; 
    }
    
    
    
    
    既然我们有了很方便的roi机制,但为什么要费这么大劲用创建子窗口的办法呢?这是因为,roi机制一次只能作用于图像的一个子区域,如果要同时处理图像的多个子区域,还是用创建子窗口的办法最好,否则你就要频繁连续地对子区域进行设置roi和取消roi的操作了。

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/


                   作者:gnuhpc
                   出处:http://www.cnblogs.com/gnuhpc/
                   除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


    分享到:

  • 相关阅读:
    11.29
    11.28
    11.24
    11.21
    11.17
    11.15
    11.14
    11.9
    11.5
    11.3
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2802286.html
Copyright © 2011-2022 走看看