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;
    }
  • 相关阅读:
    后台返回null iOS
    iOS代码规范
    没落的公司 该何去何从
    定位框一闪而过 iOS Swift
    根据appid跳到App Store某个APP的详情页
    Analyze 静态分析内存泄漏代码优化 instrument之Xcode
    bugly手动上传符号表和自动上传符号表
    __null_unspecified属性关键字解决内存泄漏
    栅栏函数dispatch_barrier_sync/async
    cell左滑加删除置顶功能 iOS
  • 原文地址:https://www.cnblogs.com/Jason-AnHui/p/3463009.html
Copyright © 2011-2022 走看看