抛出OpenCV和VS 2015异常:来自imread的空指针

时间:2016-10-08 13:06:06

标签: c++ opencv null visual-studio-2015 null-pointer

我在执行本周写的一些图像处理代码的发布版本时遇到了一些空指针错误。自从我使用C / C ++已经有很长一段时间了,所以我很困惑。我在VS 2015社区中使用OpenCV 3.1,我的代码在Debug环境中编译和运行没有问题。但是,当我在Release环境中编译后运行它时,我在开头就得到了空的ptr错误。

#include "stdafx.h"
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include "opencv2/imgcodecs.hpp"
#include <iostream>

using namespace cv;
using namespace std;

我很确定它会从非常开放的线上抛出异常。

int main(int argc, char* argv[])
{
    // reading in both tif files
    Mat bg = imread(argv[1], 1);            
    Mat rad_film = imread(argv[2], 1);

我得到的错误是

  

抛出未处理的异常:读取访问冲突。

     

这是nullptr。

似乎由于某种原因它正在读取空图像/矩阵,但我不知道为什么,特别是因为它在Debug环境中没有问题。

调试还指出Mat类中的此方法是问题的根源

inline void Mat::release()
{
    if( u && CV_XADD(&u->refcount, -1) == 1 )
        deallocate();
    u = NULL;
    datastart = dataend = datalimit = data = 0;
    for(int i = 0; i < dims; i++)
        size.p[i] = 0;
}

具体来说,它是给予&amp; u和&#34;这个&#34;作为问题。我不知道如何解释这个。

我正在处理的两个图像都是.tif文件。我对OpenCV和Visual Studio都很陌生,虽然本周我遇到了一些困惑,但这是我真正迷失的第一个问题。非常感谢任何帮助!

编辑:我为发布和调试链接的库是:

就库而言,我使用以下内容进行发布和调试:

'opencv_calib3d310d.lib'
'opencv_core310d.lib'
'opencv_features2d310d.lib'
'opencv_flann310d.lib'
'opencv_highgui310d.lib'
'opencv_imgcodecs310d.lib'
'opencv_imgproc310d.lib'
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_photo310d.lib
opencv_shape310d.lib
opencv_stitching310d.lib
opencv_superres310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib`

0 个答案:

没有答案