• Opencv (Opencv2)结合MFC学习数字图像处理【2】图片解码


    【如何打开图片解码】
     1. 在CImageProcessDoc类中定义图像数据

    1 #include "highgui/highgui.hpp"
    2 #include "core/core.hpp"
    3 using namespace cv;
    4 ......
    5 Mat src_image;

     2. 重写 CImageProcessDoc类的OnOpenDocument函数。 

       这个虚函数在你打开一个文件时会被调用,所以这个地方是利用Opencv解码图片的绝佳场所。
     1 BOOL CImageProcessDoc::OnOpenDocument(LPCTSTR lpszPathName)
     2 {
     3     if (!CDocument::OnOpenDocument(lpszPathName))
     4         return FALSE;
     5 
     6     // TODO:  Add your specialized creation code here
     7 
     8 
     9     return TRUE;
    10 }

    然后呢,我们使用opencv的imread函数来解码图片,lpszPathName 就是图片的绝对路径,不过这里有一个问题,我们的工程默认是开了unicode宏,所以lpszPathName指向的字符是宽字符,而imread的参数是std::string,是ansi字符,所以需要做一个宽字符字符串到ansi字符串的一个转化,为此我们封装了一个函数CString2Stdstring
    1 string CommonUtility::CString2StdString(const CString& cstr)
    2 {
    3     CT2A str(cstr);
    4     return string(str.m_psz);
    5 }
    这个功能和图像处理没啥关系,也不需要深入了解其中的原理(字符串编码的原理不在此文讨论范围之内),不过在google上查CString到string的这个转化,基本上中文的前几页的文章没几个靠谱了,最后还是在stackoverflow上找到了答案

    http://stackoverflow.com/questions/859304/convert-cstring-to-const-char

    3. 利用opencv解码图像 
    在CImageProcessDoc类的OnOpenDocument函数中加入如下代码,

    1 string str = CommonUtility::CString2StdString(lpszPathName);
    2 TRACE("%s\n",str.c_str());
    3 
    4 src_image = imread(str);
    5 TRACE("%d height:%d\n",src_image.cols,src_image.rows);

    其中TRACE用来在Output窗口打印一些信息,这个在调试时才能看到,为了验证图片解码是否正常,我们把输入图片的长宽打印了出来,如下图:

                                                            

    可见该图片的长为1024个像素,宽为768个像素,虽然没有看到这只考拉,但是说明我们的mfc框架和opencv库结合运行得还算不错,这是之后我们开发的基础。关于如何显示图片,我想了想,这个topic其实也不算太naive,涉及到一些图像方面和windows编程方面的知识,所以留待下一篇再细说。

  • 相关阅读:
    多状态场景:后端只记录行为,不记录行为的含义,比如产品定义的状态值含义;行为是客观的,不变的。
    Golang协程池的使用 原创 360质量效能 360质量效能 2021-05-28
    &strct new
    【Golang】图解函数调用栈
    Mybatis-Plus的应用场景及注入SQL原理分析
    倒计时时间到触发事件
    浅析软件供应链攻击之包抢注低成本钓鱼
    腾讯代码安全指南开源,涉及C/C++、Go等六门编程语言 https://mp.weixin.qq.com/s/yzg5uVnoJDTyaH2Wn8Vo7w
    58黄页标签提取及海量多分类优化
    引用站点策略: strict-origin-when-cross-origin 引用站点策略: no-referrer-when-downgrade
  • 原文地址:https://www.cnblogs.com/speedmancs/p/2674298.html
Copyright © 2020-2023  润新知