学习c++版opencv3.4之3

提高图像对比度

1.矩阵的掩膜操作filter2D():获取图像像素指针,掩膜操作。

2.staturate_cast<uchar>() #使像素值在0-255之间。

2.统计时间,getTickCount()

#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>

using namespace std;
using namespace cv;

int main()
{
    Mat src;
    src = imread("/Users/ming/Documents/test.jpg");
    if (src.empty()){
        printf("cannot load the image...");
        return -1;
    }
    namedWindow("src img", CV_WINDOW_AUTOSIZE);
    imshow("src img", src);
    cout << src.size() << endl;
    
    Mat dst;
    /* 掩膜的实现 */
//    dst = Mat::zeros(src.size(), src.type());
//    int rows = src.rows;
//    int cols = (src.cols-1) * src.channels();
//    int channel = src.channels();
//    cout << channel << endl;
//    for (int i=1; i<(rows-1); i++){
//        const uchar* before = src.ptr<uchar>(i-1);
//        const uchar* now = src.ptr<uchar>(i);
//        const uchar* after = src.ptr<uchar>(i+1);
//        uchar* output = dst.ptr<uchar>(i);
//        for (int j=channel; j<cols; j++){
//            output[j] = saturate_cast<uchar>(5*now[j]-(now[j-channel] + now[j+channel] + before[j] + after[j]));
//        }
//    }
    double t_start, t_end, t_cost;
    t_start = getTickCount(); //统计运行时间
    Mat kernel = (Mat_<char>(3,3) << 0,-1,0,-1,5,-1,0,-1,0); //核的大小
    /* 掩膜API接口filter2D实现 */
//    filter2D(src, dst, src.depth(), kernel); //src.depth()可以写-1
    filter2D(src, dst, -1, kernel);
    t_end = getTickCount();
    t_cost = t_end - t_start;
    t_cost = t_cost / getTickFrequency();
    printf("time cost: %2.f", t_cost);
    namedWindow("after filter", CV_WINDOW_AUTOSIZE);
    imshow("after filter", dst);
    waitKey(0);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值