zoukankan      html  css  js  c++  java
  • 记录一下一些奇怪的问题

    有些问题虽然一波操作解决了,但是不知道为啥,这里记录一下:

    image.convertTo(image, CV_32FC3)导致数据不一样了

    void sub_mean(const cv::Mat &img,cv::Mat &m_out)
    {
         const cv::Scalar m_mean = cv::Scalar(104.0,117.0,123.0);
        if(3 != img.channels() || img.empty())
        {
            return false;
        }
    
        m_out = img - m_mean;
        return ;
    }
    
    
        cv::Mat image;
        cv::resize(m_src,image,cv::Size(m_SIZE_IMAGE,m_SIZE_IMAGE));
        if(1 == image.channels()) { cv::cvtColor(image,image,CV_GRAY2BGR); }
        image.convertTo(image, CV_32FC3);
        bool b_flg = sub_mean(image,m_out);
    

    这里需要把图像数据转为一维数组数据:

    void base_transform(const cv::Mat &m_src,float *data)
    {
        int m_SIZE_IMAGE = 320;
        cv::Mat image;
        cv::resize(m_src,image,cv::Size(m_SIZE_IMAGE,m_SIZE_IMAGE));
        if(1 == image.channels()) { cv::cvtColor(image,image,CV_GRAY2BGR); }
    //    image.convertTo(image, CV_32FC3); ////////////////////////////////////
    
        //bgr  2  rgb
        for (int i = 0; i < INPUT_H * INPUT_W; i++) {
            data[i] = (float)(image.at<cv::Vec3b>(i)[2]) * 1.0 - 123.0;
            data[i + INPUT_H * INPUT_W] = (float)(image.at<cv::Vec3b>(i)[1]) * 1.0 - 117.0;
            data[i + 2 * INPUT_H * INPUT_W] = (float)(image.at<cv::Vec3b>(i)[0]) * 1.0  - 104.0;
        }
    }
    

    一加image.convertTo(image, CV_32FC3); 这句就会导致数据不一样,不知道为啥

    好记性不如烂键盘---点滴、积累、进步!
  • 相关阅读:
    Python()- 面向对象的组合用法
    HASHMAP 深入解析
    java深入解析
    centos 防火墙关闭/开启
    idea讲web项目部署到tomcat,热部署
    idea真不习惯啊
    JetbrainsCrack
    js 模块化
    JavaWeb中session创建与销毁的问题
    前端导出文件功能document.execCommand命令
  • 原文地址:https://www.cnblogs.com/yanghailin/p/14501507.html
Copyright © 2011-2022 走看看