zoukankan      html  css  js  c++  java
  • opencv学习之路(3):黑白图像的锐化,row(),col(),setTo,cv::Scalar(),saturate_cast

    图像锐化:

    #include <iostream>
    #include "opencv2/opencv.hpp"
    using namespace std;
    /*图像锐化
     *方法1
     *对图片的每个像素进行如下处理:
     *current像素=5*current-up-down-left-right;
     */
    void sharpen(const cv::Mat &Image,cv::Mat &result)
    {
        int rows =Image.rows;
        int cols =Image.cols*Image.channels();
        result.create(Image.size(),Image.type());
        cout<<"channels:"<<Image.channels();
        if(Image.channels() ==1)
        {
            for(int i=1;i<rows-1;i++)
            {
                const uchar *current =Image.ptr<uchar>(i);
                const uchar *up =Image.ptr<uchar>(i-1);
                const uchar *down =Image.ptr<uchar>(i+1);
                uchar *output =result.ptr<uchar>(i);
                for(int j=1;j<cols-1;j++)
                {
                    output[j] =cv::saturate_cast<uchar>(5*current[j]-up[j]-down[j]-current[j-1]-current[j+1]);
                }
            }
        }
        result.row(0).setTo(cv::Scalar(0));
        result.row(result.rows-1).setTo(cv::Scalar(0));
        result.col(0).setTo(cv::Scalar(0));
        result.col(result.cols-1).setTo(cv::Scalar(0));
    }
    
    /*图像锐化
     *方法2
     *调用filter2D函数
     */
    void sharpen2D(const cv::Mat &image,cv::Mat &result)
    {
        cv::Mat kernel(3,3,CV_32F,cv::Scalar(0));
        kernel.at<float>(0,1) =-1;
        kernel.at<float>(1,0) =-1;
        kernel.at<float>(1,1) =5.0;
        kernel.at<float>(1,2) =-1;
        kernel.at<float>(2,1) =-1;
        cv::filter2D(image,result,image.depth(),kernel);
    }
    int main()
    {
        cv::Mat matImage = cv::imread("E:/QtMaterial/images/boldt.jpg",0);
        cv::Mat matOutImage;
        cv::imshow("Orignal",matImage);
    //    sharpen(matImage,matOutImage);
        sharpen2D(matImage,matOutImage);
        cv::imshow("Process",matOutImage);
        cv::waitKey();
        return 0;
    }
  • 相关阅读:
    NTKO Officecontrol在线Word编辑器的使用
    SQL数据类型解释
    经典SQL语句大全(网络资源共享)
    Ext.grid.GridPanel属性及方法等
    C#简易播放器(基于开源VLC)
    委托,是我委托你处理事件
    .NET面试必备(整理)
    SQL server 数据库连接方式分析
    FTP操作类的使用
    微信企业号平台开发之获取菜单,创建菜单和删除菜单
  • 原文地址:https://www.cnblogs.com/Jason-AnHui/p/3463009.html
Copyright © 2011-2022 走看看