Qt+OpenCV移植到arm上采集摄像头视频 请注意

     一般都是在PC上跑的通,但在arm就不行。到arm上直接段错误。参见我以前的帖子http://www.oschina.net/question/256295_51872。原因就是出在CvCapture* pCapture = cvCreateCameraCapture(-1);这句话上,一执行到这里就会报Segmentation fault 。非常恼人,我当时请教了很多人也没有答案,最后不了了之。后来很多人加我,来问这个事。再后来,有一个女娃加我,说她解决这个问题了。我当时在做其他项目,如果这位女同志或哪位高人看到这个问题、知道怎么解决请回复下。

        所以,如果解决不了这个问题,那在arm上采集摄像头视频只能用V4l2了。网上也是有资源的,改改也能用。参见:http://download.csdn.net/detail/yanzi1225627/4223630 这是我根据oschina上改的,可以用,但偶尔会出现卡死的情况。

 

        后来,一位仁兄又给了我一个程序linux下用v4l2采集摄像头视频,挺好的,一点也不卡,可以随意拖动窗口都不卡。回头我传上来。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 101
    评论
如果你想在Qt中读取地方摄像头视频,可以使用OpenCV的`VideoCapture`类进行操作。 具体步骤如下: 1. 在Qt中添加OpenCV库,可以在.pro文件中添加以下内容: ``` INCLUDEPATH += /usr/local/include/opencv4 LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_videoio ``` 其中,`/usr/local/include/opencv4`为OpenCV的头文件路径,`/usr/local/lib`为OpenCV库文件路径。 2. 在Qt中创建一个窗口用于显示视频。 3. 使用`VideoCapture`类打开地方摄像头,可以通过参数指定摄像头的设备编号或者视频文件的路径。 4. 循环读取视频帧并在窗口中显示,直到读取失败或者用户退出程序。 完整代码示例如下: ``` #include <opencv2/opencv.hpp> #include <QApplication> #include <QMainWindow> #include <QImage> #include <QPixmap> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; QLabel label; window.setCentralWidget(&label); window.show(); cv::VideoCapture cap(0); // 打开地方摄像头 if (!cap.isOpened()) // 打开失败 { std::cerr << "Failed to open camera." << std::endl; return -1; } while (true) // 循环读取视频帧 { cv::Mat frame; cap >> frame; // 读取视频帧 if (frame.empty()) break; // 读取失败,退出循环 cv::cvtColor(frame, frame, cv::COLOR_BGR2RGB); // OpenCV图像格式为BGR,需要转换为RGB QImage qimg(frame.data, frame.cols, frame.rows, QImage::Format_RGB888); // 创建QImage对象 QPixmap qpixmap = QPixmap::fromImage(qimg); // 转换为QPixmap对象 label.setPixmap(qpixmap); // 显示在窗口中 QApplication::processEvents(); // 处理Qt事件,保证窗口正常显示 if (cv::waitKey(30) == 'q') break; // 按下q键退出循环 } return app.exec(); } ``` 其中,`QMainWindow`和`QLabel`用于创建窗口和显示视频帧,`QImage`和`QPixmap`用于将OpenCV的图像格式转换为Qt的图像格式,`QApplication::processEvents()`用于保证窗口正常显示。
评论 101
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值