xuanlzjust 2022-12-10 15:52 采纳率: 54.5%
浏览 76
已结题

入门的open cv 报错现象


#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
  VideoCapture capture(0);
  while(1)
  {
     Mat frame;
     capture >> frame; 
     imshow("读取视频帧",frame);
     waitKey(30);
   }
     system("pause");
     return 0;
}

出现的报错:[ WARN:0@10.284] global /home/lzx/图片/opencv-4.5.5/opencv-4.5.5/modules/videoio/src/cap_v4l.cpp (1000) tryIoctl VIDEOIO(V4L2:/dev/video0): select() timeout.
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.5.5) /home/lzx/图片/opencv-4.5.5/opencv-4.5.5/modules/core/src/array.cpp:2494: error: (-206:Bad flag (parameter or structure field)) Unrecognized or unsupported array type in function 'cvGetMat'
请问这是为什么呢?

  • 写回答

1条回答 默认 最新

  • 普通网友 2022-12-10 18:57
    关注

    这个错误消息表明在函数 cvGetMat 中遇到了无法识别或不支持的数组类型。这可能是因为数组的类型与函数不兼容,或者数组的类型在当前环境中没有被定义。如果您知道数组的类型是什么,则可能需要将其与 cvGetMat 函数进行比较,以确定是否存在不兼容之处。此外,您可能需要确保您的环境中定义了所有必需的数组类型。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    xuanlzjust 2022-12-11 01:59

    请问怎末解决呢?

    回复
    xuanlzjust 2022-12-11 01:59

    不是代码的问题吧

    回复
    普通网友 回复 xuanlzjust 2022-12-11 03:42

    这个错误可能是因为 OpenCV 版本不兼容导致的。

    在 OpenCV 4.0 中,cvGetMat 函数已经被弃用,不再支持。如果您使用的是 OpenCV 4.0 或更高版本,可以尝试更新代码,使用新的 OpenCV API 来解决这个问题。

    例如,您可以更改代码中的 cvGetMat 函数为 Mat 类的构造函数。例如:

    
    // 以前的代码
    CvMat old_mat = cvGetMat(old_image);
    
    // 新的代码
    Mat new_mat = Mat(old_image);
    

    此外,还应该注意在 OpenCV 4.0 中,类和函数的命名方式也发生了变化。例如,CvMat 类已经被更改为 Mat 类。因此,您可能需要修改代码中的所有 CvMat 类型的变量名。

    总之,如果您使用的是 OpenCV 4.0 或更高版本,建议更新代码,使用新的 OpenCV API 来解决此错误。

    1
    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月17日
  • 创建了问题 12月10日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部