По какой-то причине этот код вызывает нарушение прав доступа при втором чтении, но не при первом.
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main(int argc, char **argv)
{
Mat mat1, mat2;
char imgname1[255]="cise_StackD.tif";
mat1 = imread( imgname1, CV_LOAD_IMAGE_GRAYSCALE);
char imgname2[255]="ecise_StackD.tif";
mat2 = imread( imgname2, CV_LOAD_IMAGE_GRAYSCALE);
return 0;
}
Точное сообщение об ошибке во время выполнения: «Необработанное исключение в 0x61f437ef (msvcr100d.dll) в MLMVNroThrust.exe: 0xC0000005: расположение чтения нарушения доступа 0xcccccccc.» Идентичный код с одинаковыми видимыми настройками проекта приемлемо работает на другом ПК. Изображения являются идентичными копиями.
Я использую готовые двоичные файлы OpenCV 2.4.3; проекты также настроены на использование CUDA, но я вычеркнул весь код CUDA, чтобы изолировать проблему.
Что делает это нарушение прав доступа и как от него избавиться?
Благодарю.
в этот пост на форумах OpenCV, это происходит при использовании Visual C ++ 2008 с путем OpenCV, предназначенным для 2010 года (OPENCV_AV был установлен в «% OPENCV_ROOT% \ x86 \ vc10»).
Я исправил эту проблему на своем лабораторном ПК (для OPENCV_AV теперь установлено значение «% OPENCV_ROOT% \ x86 \ vc9»), которое было настроено в Visual C ++ 2010 для использования предыдущими исследователями.
Спасибо всем, кто откликнулся!
Других решений пока нет …