zoukankan      html  css  js  c++  java
  • 《学习OpenCV》课后习题解答5

    题目:(P104)
    为一个图像创建多个图像头。读取一个大小至少为100*100的图像。另创建两个图像头并设置它们的origion,depth,nChannels和widthStep属性同之前读取的图像一样。在新的图像头中,设置宽度为20,高度为30.最后,将imageData指针分别指向像素(5,10)和(50,60)像素位置。传递这两个新的图像头给cvNot()。最后显示最初读取的图像,在那个大图像中应该有两个矩形,矩形内的值是原始值的求反值。

    解答:

    #include "cv.h"
    #include "highgui.h"
    
    int main(int argc, const char** argv)
    {
        IplImage *src = cvLoadImage(argv[1]);
        IplImage *dst1, *dst2;
    
        dst1 = cvCreateImage(cvSize(20, 30), src->depth, src->nChannels);
        dst1->origin = src->origin;//origin设置坐标原点的起始位置
        dst1->widthStep = src->widthStep;
    
        dst2 = cvCreateImage(cvSize(20, 30), src->depth, src->nChannels);
        dst2->origin = src->origin;
        dst2->widthStep = src->widthStep;
    
        dst1->imageData = src->imageData + 10 * src->widthStep + 5 * src->nChannels;
        dst2->imageData = src->imageData + 60 * src->widthStep + 50 * src->nChannels;
        cvNot(dst1, dst1);
        cvNot(dst2, dst2);
    
    
        cvNamedWindow("src", 1);
        cvShowImage("src", src);
        cvWaitKey(0);
    
        cvReleaseImage(&src);
        cvReleaseImage(&dst1);
        cvReleaseImage(&dst2);
        cvDestroyWindow("src");
        return 0;
    }

    结果图:
    这里写图片描述
    补充:运行之前请先设置好命令行参数argv[1],把图片路径设置好。可参考http://blog.csdn.net/u012130706/article/details/51443468

  • 相关阅读:
    2021.1.18 HTML标签及元素
    嵌入式发展史简述及一些概念
    06 突破512字节的限制 上
    50 排序的工程应用示例
    01 进阶操作系统
    05 主引导程序的扩展-下
    04 主引导程序的扩展-上
    03 调试环境的搭建
    在windows下使用linux命令,GnuWin32的使用.
    gcc -I -L -l区别
  • 原文地址:https://www.cnblogs.com/huahai/p/7271062.html
Copyright © 2011-2022 走看看