zoukankan      html  css  js  c++  java
  • 【OpenCV学习】梯度化一张图片

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

    #include "cv.h"
    #include "cxcore.h"
    #include "highgui.h"
    #include 
    
    int main(int argc, char **argv)
    {
    CvPoint center;//定义一个二维坐标的点
    double scale = -3;
    int i,j;
    IplImage *image = argc ==2? cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR):0;//打开一张图片
    if(!image)
    return -1;
    center=cvPoint(image->width/2,image->height/2);//构造这个二维坐标的点
    for(i=0;iheight;i++)
    for(j=0;jwidth;j++)
    {
    double dx=(double)(j-center.x)/center.x;
    double dy=(double)(i-center.y)/center.y;
    double weight =exp((dx*dx+dy*dy)*scale);
    
    /*可以使用opencv定义的宏来提取象素值,
    假设灰度图像image,存取其i行j列的象素可以这样:CV_IMAGE_ELEM(image, uchar, i, j)
    如果是彩色图像就是
    CV_IMAGE_ELEM(image, uchar, i, 3*j)
    CV_IMAGE_ELEM(image, uchar, i, 3*j+1)
    CV_IMAGE_ELEM(image, uchar, i, 3*j+2) */
    uchar * ptr=&CV_IMAGE_ELEM(image,uchar,i,j*3);
    ptr[0]=cvRound(ptr[0]*weight);// 将浮点数转化为整数。
    ptr[1]=cvRound(ptr[1]*weight);
    ptr[2]=cvRound(ptr[2]*weight);
    }
    cvSaveImage("copy.jpg",image);//保存图像
    
    /*打开图像*/
    cvNamedWindow("Window",1);
    cvShowImage("Window",image);
    cvWaitKey(-1);
    return 0;
    }


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


    分享到:

  • 相关阅读:
    java线程(1)-线程同步
    Scala:(3)数组
    Codeforces 899F Letters Removing
    拼图游戏的可解性
    Hash
    哈夫曼编码
    莫比乌斯
    FFT
    Ropes
    区间合并
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2568755.html
Copyright © 2011-2022 走看看