zoukankan      html  css  js  c++  java
  • opencv imread

    原文:opencv imread

    这几天看一个鸟程序,大量使用opencv,无奈之下略微学习一下。

    从网上找了个最简单的程序,读取并显示图片,竟然不能完成显示任务。然经努力,最终解决问题。

    代码如下:

    #include "cv.h"
    #include "highgui.h"
    #include <string>

    #pragma comment(lib, "cv210.lib")
    #pragma comment(lib, "cxcore210.lib")
    #pragma comment(lib, "highgui210.lib")
    #pragma comment(lib, "cvaux210.lib")

    using namespace cv;        // 下面的所有cv 相关类型不用加上前缀了
    using namespace std;

    int main(int argc, char* argv[])
    {
     string file_name = "girl2.jpg";
     Mat img = imread(file_name);    // 声明Mat 变量并调入照片
     if(!img.data)        // 判断图片调入是否成功
      return -1;        // 调入图片失败则退出

     namedWindow("girl", CV_WINDOW_AUTOSIZE); // 创建窗口,并确定其为大小不可变类型窗口
     imshow("girl", img);      // 显示图片。如果你不介意窗口大小可变,可以直接注释掉上一句。因为imshow 可以直接创建窗口
     waitKey();         // 等待按键

        return 0;
    }

    运行程序,发现图片不显示。

    调试发现

    if(!img.data) // 判断图片调入是否成功
    return -1; // 调入图片失败则退出

    又从网上找了相同功能的代码如下:

    int main( int argc, char** argv )
    {
        IplImage* pImg;      // 声明IplImage指针
     
        // 载入图像
        if( argc == 2 && (pImg = cvLoadImage( argv[1], 1)) != 0 )
        {
            cvNamedWindow( "Image", 1 ); // 创建窗口
            cvShowImage( "Image", pImg ); // 显示图像
     
            cvWaitKey(0);     // 等待按键
     
            cvDestroyWindow( "Image" );  // 销毁窗口
            cvReleaseImage( &pImg );  // 释放图像
            return 0;
        }
     
        return -1;
    }

    能完成任务。

    继续调不能运行的代码。

    怀疑文件路径有问题,改成绝对路径,依然不行。怀疑字符串问题,改成定义string,还是不行。

    忽然想起试一下Release 版本,竟然能行。

    乃想到可能Release版的库只能用于Release 版程序。

    改成

    #pragma comment(lib, "cv210d.lib")
    #pragma comment(lib, "cxcore210d.lib")
    #pragma comment(lib, "highgui210d.lib")
    #pragma comment(lib, "cvaux210d.lib")

    则可用于Debug 版程序,即对imread 这个函数而言,Debug版的库只能用于Debug版的程序。

    结果如下:

  • 相关阅读:
    这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!
    SpringBoot:application.properties基本的参数配置
    SpringBoot:搭建第一个Web程序
    PO,VO,DAO,BO,POJO 之间的区别你懂吗?
    这篇文章太懂程序员了,扎心了
    委托和事件
    Log4net 封装用法
    js 在一个DIV前、中、后、插入新DIV
    关于装修
    JS查询class的名称
  • 原文地址:https://www.cnblogs.com/slysky/p/2248214.html
Copyright © 2011-2022 走看看