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); 这句就会导致数据不一样,不知道为啥

    好记性不如烂键盘---点滴、积累、进步!
  • 相关阅读:
    [项目管理]如何写好项目验收材料
    [英语学习]英语高级口译证书考试 备查
    A1042 Shuffling Machine洗牌机器
    B1018锤子剪刀布
    B1012数字分类
    B1008数组元素循环右移问题
    B1046划拳
    B1026 程序运行时间
    B1016部分A+B
    B1011A+B和C
  • 原文地址:https://www.cnblogs.com/yanghailin/p/14501507.html
Copyright © 2011-2022 走看看