Native’ завершается с кодом 2 (0x2)

#c #visual-studio-2010 #opencv #image-processing #dll

#c #visual-studio-2010 #opencv #обработка изображений #dll

Вопрос:

Я использую windows8.1, visual studio10 и Opencv. это мой код

 #include "stdafx.h"

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <opencv/cvaux.h>
#include <stdio.h>

using namespace cv;
using namespace std;

int main(int argc, const char * argv[]){
  

// Использование структуры данных Mat

 int Arr[256];
int x;
Mat image, A, B;

image = imread("C:/Users/chandanawin8/Desktop/len.jpg", CV_LOAD_IMAGE_COLOR);

for(int a=0; a<255;a  ){       

    Arr[a] = 0;         } 
//int Arr[256] = {0}   

  if(!image.data){

    printf("Error: Couldn't open the file.n");
    return 2;

}

  cvtColor(image, A, CV_RGB2GRAY);    

//creating the histogram by taking a count to an arry

for(int i=0; i<A.rows; i  ){        

    for(int j=0; j<A.cols;j  ){            

x = A.at<uchar>(i,j);
Arr[x] = Arr[x] 1;

        if(x<103){           

            A.at<uchar>(i,j) = 0;    }

        else if(x<219){

            A.at<uchar>(i,j) = (x-103)*(220-1)/(219-103)   1;        
  }

        else if(x<242){

            A.at<uchar>(i,j) = (x-219)*(255-220)/(242-219)  219;

        }

        else{

        }

        //pixels from 241 to 255: keep them. if want we can remove it

    }

}



for(int a=0; a<255;a  ){   

std::cout<<"Number of  "<<a<<"  Value: "<<Arr[a]<<std::endl;

   }



//creating the font
//cvInitFont(amp;font, CV_FONT_HERSHEY_COMPLEX, 3,3, 0.0, 5,8);

//display the image
cvNamedWindow("Main Window", CV_WINDOW_AUTOSIZE);
    imshow("Main Window", image);

    cvNamedWindow("Display Window", CV_WINDOW_AUTOSIZE);
    imshow("Display Window", A);

cv::waitKey(0);
  image.release();
A.release();    

return 0;
  

}

после запуска он получает эту ошибку

 'BreailTest2.exe': Loaded 'C:WindowsSystem32msctf.dll', Cannot find or open the PDB file
The program '[3044] BreailTest2.exe: Native' has exited with code 2 (0x2).
  

любой, можете ли вы помочь мне решить эту
проблему несколько дней назад, это сработало.теперь он не работает. я немного новичок в opencv и Visual Studio
, большое спасибо

Ответ №1:

Проблема в том, что ваше изображение загрузилось неправильно.

Если вы посмотрите на журнал, он сообщит вам, что приложение завершилось с кодом 2.

Если вы посмотрите на свой код, только поместите его в конец с 2, это

 if(!image.data){

    printf("Error: Couldn't open the file.n");
    return 2;

}
  

Поэтому я бы проверил, что вы ввели правильный путь к файлу и что файл изображения существует,

Ответ №2:

проблема возникает при использовании функции Imread

 image = imread("C:/Users/chandanawin8/Desktop/len.jpg", CV_LOAD_IMAGE_COLOR);
  

вместо приведенной выше функции используйте нижеприведенную функцию

 image = cvLoadImage("C:/Users/chandanawin8/Desktop/easy.JPG",CV_LOAD_IMAGE_COLOR);
  

Комментарии:

1. дорогой, нет. плохая идея. следует избегать старых вызовов c-api. если imread не работает, у вас есть более серьезная проблема, связанная с компоновщиком, скрывающаяся под ним. проверьте, не смешали ли вы библиотеки отладки / выпуска или что-то в этом роде.

2. спасибо за ответ. когда я использую его cvloardImage function .он работает .. если вы немного объясните, вы сказали проверить библиотеки отладки / выпуска .. я новичок в OpenCV

3. если вы не знаете, ответы не связаны с