Проблема с веб-камерой в opencv

Я пытаюсь написать код для обнаружения объекта в OpenCV. Но я не знаю, в чем проблема с моей веб-камерой ноутбука, когда у меня просто серое окно. Я имею в виду светодиод веб-камеры, но окно серое и ничего не показывает. Я искал сайт, и я знаю, что были люди с той же проблемой, и это было объяснено ранее, но ни одно из решений не помогло мне. В любом случае вот мой код, я был бы рад, если бы вы могли мне помочь! Благодарю.

Кстати, я использую Windows 8.1, OpenCV 2.2 и Visual c ++ 2010 Express. Если может быть какая-либо несовместимость в отношении окон или что-то еще, дайте мне знать.

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

#include<iostream>

int main() {
cv::VideoCapture capWebcam(0);

if (capWebcam.isOpened() == false) {
std::cout << "error: capWebcam not accessed successfully\n\n";
return(1);
}

cv::Mat matOriginal;
cv::Mat matProcessed;

std::vector<cv::Vec3f> vecCircles;
std::vector<cv::Vec3f>::iterator itrCircles;

cv::namedWindow("Original");
cv::namedWindow("Processed");

char charCheckForEscKey = 0;

while (charCheckForEscKey != 27) {
if (capWebcam.read(matOriginal) == NULL) {
std::cout << "error: frame not read from webcam\n\n";
break;
}

cv::inRange(matOriginal,
cv::Scalar(0, 0, 175),
cv::Scalar(100, 100, 256),
matProcessed);

cv::GaussianBlur(matProcessed,
matProcessed,
cv::Size(9, 9),
1.5);

cv::HoughCircles(matProcessed,
vecCircles,
CV_HOUGH_GRADIENT,
2,
matProcessed.rows / 4,
100,
50,
10,
400);

for (itrCircles = vecCircles.begin(); itrCircles != vecCircles.end(); itrCircles++) {

std::cout << "ball position x=" << (*itrCircles)[0]
<< ", y=" << (*itrCircles)[1]
<< ", z=" << (*itrCircles)[2] << "\n";

cv::circle(matOriginal,
cv::Point((int)(*itrCircles)[0], (int)(*itrCircles)[1]),
3,
cv::Scalar(0, 255, 0),
CV_FILLED);

cv::circle(matOriginal,
cv::Point((int)(*itrCircles)[0], (int)(*itrCircles)[1]),
(int)(*itrCircles)[2],
cv::Scalar(0, 255, 0),
3);
}

cv::imshow("Original", matOriginal);
cv::imshow("Processed", matProcessed);

charCheckForEscKey = cv::waitKey(10);
}
return(0);
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]