zoukankan      html  css  js  c++  java
  • 基于OpenVINO的端到端DL网络-GOMfcTemplate在vs2017上的运行并融合Dnn模块

    GOMfcTemplate一直运行在VS2012上运行的,并且开发出来了多个产品。在技术不断发展的过程中,出现了一些新的矛盾:
    1、由于需要使用DNN模块,而这个模块到了4.0以上的OpenCV才支持的比较完善,所以需要修改OpenCV版本;
    2、4.0以上的OpenCV需要使用c++11,所以VS2012无法使用,故直接跳过VS2013、VS2015,直接使用2017;
    3、4.0以上的OpenCV不支持老版本的CV,所以CVVImage中很多东西无法使用。

    为了解决系列问题,进行研究。并且将研究结果记录下来:
     
    一、解决模块冲突问题
    1、在将GOMfcTemplate改成64位的过程中,一个常见的问题为头文件支持错误,比如“出现error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面) ”或者“出现error C2061 : 语法错误: 标识符“LPDIRECT3D2”等之类的经过修改后的头文件应该是这样的:
     
    应该能够解决绝大多问题;

    二、升级过程中的版本问题
     
    在设置的时候,注意
    以及
     
    三、版本统一,全部使用PreBuild版本
     
     
    但是在使用过程中,可能会报这样的错误
    需要添加设置
    在Lib的附加依赖项
    并且添加这两个.lib
     
    四、代码融合问题
    为了得到这样的结果,在几个地方需要做出修改:
     
     
    在OnInitDialog中
     
    在主要处理的线程中
     
    将代码继续维护,丰富“采用算法”按钮。
     
    五、丢掉CVVImage
     
    CVVImage中需要CV库的引入,但在新版本的代码中,cv.h都找不到了。为了彻底地解决这个问题,直接重新了showimage函数,将CVVImage中有用的部分引入进来。
    得到的结果能够使用,但是可能存在一些由于不是很完备而造成的问题,特别是输入函数的图像一定要是cv_8u RGB的,可能还会存在其他问题,需要在使用过程中特别注意:
     
    void CGOMfcTemplate2Dlg::showImage(Mat srcUINT ID)
    {
        if (src.empty())
            return;
        CRect rect;
        GetDlgItem(ID) ->GetClientRect( &rect );    // 在哪里进行显示?
        CDCpDC = GetDlgItemID ) ->GetDC();   
        HDC hDC = pDC ->GetSafeHdc();                // 获取显示控件(位置)的 HDC(设备句柄)
        
     
        BITMAPINFO bmi = { 0 };                     //生成bitmap
        bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
        bmi.bmiHeader.biCompression = BI_RGB;
        bmi.bmiHeader.biWidth = src.cols;
        bmi.bmiHeader.biHeight = src.rows * -1;
        bmi.bmiHeader.biPlanes = 1;
        bmi.bmiHeader.biBitCount = 24;
     
        m_bitmapBits = new RGBTRIPLE[src.cols * src.rows];
        Mat cv_bitmapBits(Size(src.colssrc.rows), CV_8UC3m_bitmapBits);
        src.copyTo(cv_bitmapBits);                      //拷贝到内存中
        
        if (rect.Width() > src.cols)
        {
            SetStretchBltMode(
                hDC,           // handle to device context
                HALFTONE);
        }
        else
        {
            SetStretchBltMode(
                hDC// handle to device context
                COLORONCOLOR);
        }
     
        ::StretchDIBits(hDC, 0, 0, rect.Width(), rect.Height(), 0, 0, src.cols,src.rowsm_bitmapBits,&bmiDIB_RGB_COLORSSRCCOPY);//显示在街面上
     
     
        ReleaseDCpDC );
    }
     
    这里使用的是对话框模式,如果在Model/View模式中使用,可以结合Paint/Draw等,将模式更好地使用。
     
    目前在64位、PreBuild下都是可以运行的,Dshow也没有问题,应该说是得到了比较好的结果。





    附件列表

  • 相关阅读:
    HTML清除浮动的几种形式
    HTML和XML的区别
    CSS选择器的优先级
    CSS选择器
    PHP单文件和多文件的上传(示例)
    单元测试
    定义person类及其子类,并按要求设计、定义和实例化类 (实例)
    CSS的 行内元素 和 块类元素
    小心了!Kubernetes自动化操作工具将让你失去工作
    开源云计算厂商:浅析渠道激活平台的打造
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/11000551.html
Copyright © 2011-2022 走看看