zoukankan      html  css  js  c++  java
  • 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编程方面的知识,所以留待下一篇再细说。

  • 相关阅读:
    从B树、B+树、B*树谈到R 树
    从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA
    Linux Kafka源码环境搭建
    CentOS 关闭图形用户界面
    部署与管理ZooKeeper(转)
    spark 2.0.0集群安装与hive on spark配置
    hive on spark的坑
    Spark2.0.0源码编译
    hive spark版本对应关系
    CentOS7 设置集群时间同步
  • 原文地址:https://www.cnblogs.com/speedmancs/p/2674298.html
Copyright © 2011-2022 走看看