• opencv学习笔记(02)——遍历图像(指针法)


    #include <opencv2corecore.hpp>
    #include <opencv2highguihighgui.hpp>
    #include <opencv2imgprocimgproc.hpp>
    #include <iostream>
    
    void colorReduce(cv::Mat& image, int div=64)
    {
        int nr = image.rows;    
        int nc = image.cols * image.channels();
    
        int n = static_cast<int>( cv::log(static_cast<double>(div)) / cv::log(2.0) );
        uchar mask = 0xFF << n;
    
        for(int i=0; i<nr; i++)
        {
            uchar* data = image.ptr<uchar>(i);
            for(int j=0; j<nc; j++)
            {
                //*data++ = *data - *data % div + div / 2;
                *data++ = (*data & mask) + div / 2;
            }
        }
    
    }
    
    
    int main(int argc, char** argv)
    {
    
        cv::Mat img = cv::imread("F:\images\boldt.jpg");    
        cv::Mat img2 = img.clone();    
    
        double duration;
        duration = static_cast<double>(cv::getTickCount());
    
        colorReduce(img2);
        duration = static_cast<double>(cv::getTickCount()) - duration;
        duration /= cv::getTickFrequency();
    
        cv::namedWindow("original");    
        cv::imshow("original", img);
        cv::namedWindow("altered");    
        cv::imshow("altered", img2);
    
        std::cout << duration << std::endl;
    
        cv::waitKey(0);
        return 0;
    
    }
  • 相关阅读:
    H公司以及我的目标
    新的起点
    apache服务器配置Net的实践
    会计简要学习
    二、MongoDB的简单增删改查
    一、MongoDB安装与启动
    KnockOutJs初次体验
    DevExpress 全体窗口换肤的功能 winform
    DevExporess 右键菜单的实现
    使用gridControl gridview总结
  • 原文地址:https://www.cnblogs.com/takeaction/p/3734559.html
Copyright © 2020-2023  润新知