图像锐化

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;

void sharpenImage1(const cv::Mat& image, cv::Mat &result)
{
    cv::Mat kelnel (3,3,CV_32F,cv::Scalar(0)); //构造核函数
        //对核元素进行赋值
    kelnel.at<float>(1,1)=5.0;
    kelnel.at<float>(0,1)=-1.0;
    kelnel.at<float>(2,1)=-1.0;
    kelnel.at<float>(1,0)=-1.0;
    kelnel.at<float>(1,2)=-1.0;
    //对图像进行滤波
    cv::filter2D(image,result,image.depth(),kelnel);
}

int main(int argc, char* argv[])
{
    Mat image = cv::imread("my.jpg");
    Mat image_gray ;
    image_gray.create(image.size(),image.type());//创建一个矩阵
    if(!image.data)
        return -1;//判断是否图片存在,若不存在,返回-1
    if(image.channels()==3)//如果为3通道,即彩色图片
        cv::cvtColor(image,image_gray,CV_RGB2GRAY);//将彩色图片转化为灰度图片
    cv::Mat result;
    result.create(image_gray.size(),image_gray.type());
    double time_ = static_cast<double>(cv::getTickCount());
    sharpenImage1(image_gray,result);
    time_ = 1000*static_cast<double>(cv::getTickCount()-time_)/cv::getTickFrequency();
    std::cout<<"time = "<<time_<<"ms"<<std::endl;

    cv::imshow("image result",result);

    cv::waitKey();
    return 0;
}


对图像进行锐化 并输出时间

posted @ 2014-03-11 15:45  我的新世界  阅读(424)  评论(0)    收藏  举报