x.D.stream 发表于 2014-5-2 23:54:04

关于opencv打开摄像头和摄像

在树莓派上配置好了opencv,然后连接了摄像头,也可以用。可以从摄像头拍下一帧的照片,但是拍不了第二帧,程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <opencv/highgui.h>
#include <opencv/cv.h>
int main()
{
      printf("program has opened\n");
      IplImage* img=NULL;//图像结构体
      IplImage* img2=NULL;
      CvCapture* cam = cvCreateCameraCapture(0);
      img = cvQueryFrame(cam);
      cvSaveImage("photo.jpg", img, 0);
      cvWaitKey(33);
      cvReleaseImage(&img);
      cvWaitKey(33);
      cam=cvCreateCameraCapture(0);
      img2 = cvQueryFrame(cam);//这里出错,如果没有上面一行会显示段错误,如果有上面一行显示下文说的错
      if (img2==NULL)
      {
      }
      else
      {
                cvSaveImage("photo2.jpg", img2, 0);
                char c2=cvWaitKey(33);
                cvReleaseImage(&img2);
      }
      return 0;
}

然后在那一行出现这个错误:

VIDIOC_REQBUFS: Device or resource busy
munmap: Invalid argument
munmap: Invalid argument
munmap: Invalid argument
munmap: Invalid argument
Unable to stop the stream.: Bad file descriptor
munmap: Invalid argument
munmap: Invalid argument
munmap: Invalid argument
munmap: Invalid argument
*** glibc detected *** ./opencv: double free or corruption (fasttop): 0x014cc2e0 ***
Aborted

求大神解答啊,为什么会这样,第一帧可以清晰保存啊

teddyrpi 发表于 2015-4-22 13:46:38

谢谢分享,学习中。。。

shumeipai110 发表于 2017-5-7 13:40:20

楼主怎么配置的opencv 啊,网上的教程太多了,长得都不太一样。。。。

hongshantou 发表于 2017-11-1 09:54:38

据我所知 不能连拍,拍完第一张后 过几秒再拍第二张,不然会报错写入文件错误,我们用的软件不一样

dianzichina 发表于 2019-6-10 10:19:15

这个很好,现在我正在学习这个嘞。
页: [1]
查看完整版本: 关于opencv打开摄像头和摄像