#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. если вы не знаете, ответы не связаны с