القضية
يظهر الخطأ عند تشغيل رمز المثال هذا من وثائق فئة VideoCapture ، http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
_ خطأ: _
libv4l2: error setting pixformat: Device or resource busy
VIDEOIO ERROR: libv4l unable to ioctl S_FMT
libv4l2: error setting pixformat: Device or resource busy
libv4l1: error setting pixformat: Device or resource busy
VIDEOIO ERROR: libv4l unable to ioctl VIDIOCSPICT
خطواتي حتى الآن
الحلول الممكنة
لا يعمل على كل من USB المتصل Logitech qc 3000 وكاميرا الويب.
نظام أوبونتو 16.
أحتاج إلى استخدام دفق الفيديو من كاميرا الويب. (لاحقًا من المزيد من كاميرات الويب)
ربما تحل. بطريقة ما لم يتم تحرير كاميرا الويب عن طريق إنهاء مثيل واحد من البرنامج ، لذلك حدث تعارض من خلال تشغيله مرة أخرى. كما أن هذا السلوك الغريب كان سببه هذا السطر من كود المثال
if(waitKey(30) >= 0) break
؛
مما جعله يتوقف على الفور تقريبًا ، قمت بتغييره إلى continue
لذا أصبح البث لا نهاية له الآن.
في الواقع ، يجب عليك استخدام أحدث المستندات بدلاً من 2.4 مستندات إذا كنت تريد البرامج التعليمية الصحيحة وعينة التعليمات البرمجية. الرابط الذي قدمته لا يعمل في الواقع ، لذلك لا أعرف ما إذا كانت المشكلة لا تزال تظهر في 3.2.
الجهاز أو الموارد مشغول
المشكلة في مكان ما هنا.
يجب أن تذهب أسئلة الاستخدام إلى منتدى Users OpenCV Q / A: http://answers.opencv.org