zoukankan      html  css  js  c++  java
  • learning_opencv 图像头的使用

    opencv中有时只需要创建结构,而不分配内存。图像头的创建由 cvCreateImageHeader()完成。

    当在一副已经读入的图像中对特定的子图像进行操作,除了使用ROI,这种方法也可以。

    例如党读入一张大小大于100*100的灰度图,将其子图像进行取反操作。可以创建一个新的图像头,将origin,depth,nchannels,widthStep属性设置成与原图像属性相同,imageSize设置成要处理的子图像大小,使用imagedata指针可以将新图像头的指针指向原图像中要处理的子图像的初始位置,则可以将新的图像头传递给cvNot()函数,对子图像求反。

    具体的函数如下:

    #include "highgui.h"
    #include "cv.h"
    
    int main(int argc, char* argv)
    {
        IplImage* imOrigin = cvLoadImage("E:\gray_image.jpg",1);
        IplImage* im1 = cvCreateImageHeader(CvSize(40,60),imOrigin->depth,imOrigin->nChannels);
        IplImage* im2 = cvCreateImageHeader(CvSize(40,60),imOrigin->depth,imOrigin->nChannels);
        im1->widthStep = imOrigin->widthStep;
        im2->widthStep = imOrigin->widthStep;
    
        im1->imageData = imOrigin->imageData + 5*im1->widthStep +10;
        im2->imageData = imOrigin->imageData + 50*im1->widthStep +60;
    
        cvNot(im1,im1);
        cvNot(im2,im2);
    
        cvNamedWindow("example",1);
        cvShowImage("example",imOrigin);
        cvWaitKey();
        cvReleaseImage(&imOrigin);
        cvReleaseImageHeader(&im1);
        cvReleaseImageHeader(&im2);
        cvDestroyWindow("example");
        return 0;
    }

    这段代码在一张灰度图中设置了两种子图像。这种新建与原图像各种属性(imageSize除外)相同的图像头,使用imagedata指针指向原图像像素地址来处理原图像子图的方法是很有用的,在模板匹配等中可以得到应用。

  • 相关阅读:
    POJ 1731
    POJ 1256
    POJ:1833 按字典序找到下一个排列:
    git工作流
    git 分之合并和冲突解决
    iis 7 操作 .net
    IIS7.0 Appcmd 命令详解
    SQL的注入式攻击方式和避免方法
    实例详解Django的 select_related
    django-ajax之post方式
  • 原文地址:https://www.cnblogs.com/zi-wang/p/5403320.html
Copyright © 2011-2022 走看看