Если я ничего не делаю (т. Е. Не изменяю HSV контроля цвета через окно управления), приложение работает нормально. Однако, если я изменяю значения HSV при запуске приложения, я получаю следующие ошибки. Я тестировал код без Hough, он работает нормально.Ошибка при использовании Hough OpenCV
ЦП Ошибка -
Unhandled exception at 0x00007FF9ECA64388 (ucrtbase.dll) in HoughFinder.exe: An invalid parameter was passed to a function that considers invalid parameters fatal.
Это мой код -
VideoCapture capture(0); // 0 is my webcam
...
capture.read(displayOriginal))
...(Code to detect colors for extra accuracy)
cudaCanny->detect(imgThresholded, imgCanny);
vector<Vec2f> lines;
//Ptr<HoughLinesDetector> hough = createHoughLinesDetector(1, CV_PI/180, 100); CUDA code...
//hough->detect(imgCanny, lines); CUDA code...
HoughLines(displayCanny, lines, 1, CV_PI/180, 100, 0, 0); // CPU code...
for (size_t i = 0; i < lines.size(); i++)
{
float rho = lines[i][0], theta = lines[i][1];
Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000 * (-b));
pt1.y = cvRound(y0 + 1000 * (a));
pt2.x = cvRound(x0 - 1000 * (-b));
pt2.y = cvRound(y0 - 1000 * (a));
line(displayHough, pt1, pt2, Scalar(0, 0, 255), 3, CV_AA);
}
imshow("Hough", displayHough);
imshow("Live Video", displayOriginal);
Extra Info -
Если я использую CUDA код, чтобы использовать Хью, я получаю эту ошибку -
Unhandled exception at 0x00007FF9F561A1C8 in HoughFinder.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000A75E81EB70.
App Error (Не получаю эту ошибку при использовании кода CPU) -
OpenCV Error: Assertion failed (d == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0)) in cv::_OutputArray::create, file OPENCV_DIR\opencv-sources\modules\core\src\matrix.cpp, line 2363
Может кто-нибудь помочь? Если какой-либо ЦП или код CUDA фиксирован, его штраф, но я бы предпочел, чтобы ошибка CUDA была исправлена (поскольку CUDA имеет дополнительную скорость).
У меня такая же проблема. Я трансформируюсь в серый цвет, я применяю медианный фильтр, я выполняю обнаружение края Canny, а затем линии Hough.Если я изменяю параметры предыдущих операций, HoughLines выдает исключение недопустимых параметров. Я заметил, что иногда у выхода Canny много линий. Может, в этом проблема? –
Перестроить OpenCV из источника и ** НЕ использовать ** WITH_QT' и ** ИСПОЛЬЗОВАТЬ ** 'WITH_CUDA' в настройках CMake. – FadedCoder