zoukankan      html  css  js  c++  java
  • 2. 把一幅图像进行平移。

    实验二
    #include "cv.h"
    #include<stdio.h> 
    #include "highgui.h"
    IplImage *PingYi(IplImage *src, int h0, int w0);
    int main(int argc, char** argv)
    {
    
        IplImage* pImg; //声明IplImage指针
        IplImage* pImgAfterMove;
        pImg = cvLoadImage("6013202130.jpg");
        pImgAfterMove = cvCloneImage(pImg);
        cvSetZero(pImgAfterMove);
        pImgAfterMove = PingYi(pImg, 100, -100);
    
        cvNamedWindow("原图", CV_WINDOW_AUTOSIZE);
        cvShowImage("原图", pImg);
        cvNamedWindow("移动后", CV_WINDOW_AUTOSIZE);
        cvShowImage("移动后", pImgAfterMove);
        cvWaitKey(0); //等待按键
    
        cvDestroyWindow("aa");//销毁窗口
        cvDestroyWindow("bb");
        cvReleaseImage(&pImg); //释放图像
        cvReleaseImage(&pImgAfterMove);
        return 0;
    }
    
    //该函数的功能是实现图像的平移
    //规定向下、向右为(正,正)
    IplImage *PingYi(IplImage *src, int h0, int w0)
    {
        int h = h0;
        int w = w0;
        int imageHeight = src->height;
        int imageWidth = src->width;
        int i, j;
        CvScalar sTemp;
        IplImage *dst = cvCloneImage(src);
        cvSetZero(dst);
        if (h >= 0 && w >= 0)
        {
            //
            for (i = 0; i<imageHeight - h; i++)
            {
                for (j = 0; j<imageWidth - w; j++)
                {
                    sTemp = cvGet2D(src, i, j);
                    cvSet2D(dst, i + h, j + w, sTemp);
                }
            }
        }
        else if (h<0 && w >= 0)
        {
            for (i = -h; i<imageHeight; i++)
            {
                for (j = 0; j<imageWidth - w; j++)
                {
                    sTemp = cvGet2D(src, i, j);
                    cvSet2D(dst, i + h, j + w, sTemp);
                }
            }
        }
        else if (h >= 0 && w<0)
        {
                    for (i = 0; i<imageHeight - h; i++)
            {
                for (j = -w; j<imageWidth; j++)
                {
                    sTemp = cvGet2D(src, i, j);
                    cvSet2D(dst, i + h, j + w, sTemp);
                }
            }
        }
        else if (h<0 && w<0)
        {
                    for (i = -h; i<imageHeight; i++)
            {
                for (j = -w; j<imageWidth; j++)
                {
                    sTemp = cvGet2D(src, i, j);
                    cvSet2D(dst, i + h, j + w, sTemp);
                }
            }
        }
        else
        {
            printf("无法移动哦!");
            dst = cvCloneImage(src);
        }
        return dst;

  • 相关阅读:
    bean的singleton(没有看到生命周期范围??)
    ApplicationContext中getBean详解
    mybatis基础之二
    mybatis基础之一
    JDOM读取xml
    SSH整合最简单的一个例子
    基础学习问题
    2015年2.9--2.15号第一周计划
    freertos的钩子函数
    IAR环境搭建注意点
  • 原文地址:https://www.cnblogs.com/zhangfeionline/p/5465175.html
Copyright © 2011-2022 走看看