【问题标题】:Segmentation Fault on CV::COLOR_BRG2GRAYCV::COLOR_BRG2GRAY 上的分段错误
【发布时间】:2015-04-27 14:30:28
【问题描述】:

我遇到了一个让我发疯的问题。

以下代码在 CV_BRG2GRAY 上产生分段错误

while (!glfwWindowShouldClose(window))
{
    cap >> image_BGR;

    cv::cvtColor(image_BGR, image_BGR, CV_BGR2GRAY);

    display(window, image_BGR);

    ...

}

一些说明

  • cap 是一个对象,它返回网络摄像头的 cv::Mat
  • 我已尝试删除 cvtColor 行,它正在工作,我看到了网络摄像头流。但我想要一个灰度图像。
  • 如果我将 CV_BGR2GRAY 替换为,例如CV_BGR2Luv,它有效。
  • 我尝试使用 cv::COLOR_BGR2GRAY,但它不起作用。

【问题讨论】:

  • 你可以尝试创建另一个垫子吗? cap >> image_BGR; cv::Mat gray; cv::cvtColor(image_BGR, gray, CV_BGR2GRAY); display(window, gray);
  • @Micka 不太确定,我正在使用给出的 makefile 进行编译。顺便说一句,您建议的代码出现以下错误:libv4l2: error turning on stream: File too large VIDIOC_STREAMON: File too large Could not query frame. Trying to reinitialize. Segmentation fault
  • 您能否在 cv::cvtColor 之前std::cout << image_BGR.size() << std::endl 并调查崩溃的图像是否存在意外值?另外,能不能加上 cv:namedWindow("hello world"); cv::waitKey(0);在循环之前?如果链接到错误的库,highgui 经常会在标题中添加一些奇怪的窗口名称 :)
  • 尝试将cap >> image_BGR;替换为image_BGR = imread("somefile"); 我怀疑不是颜色转换线导致问题。
  • @Micka Gosh,虽然文档没有明确说明,但我相信你是对的。我想知道为什么你提出的代码不适用于 OP...

标签: c++ opencv segmentation-fault


【解决方案1】:

我发现了问题:显然函数 display 只接受 bgr 图像,尽管文档中没有说明这一点:-/

【讨论】:

  • 嘿 :) 我想我们来自同一个班级。你终于成功了吗?
  • 是的,我做到了。我有一些最初的问题,其中大部分是由于我缺乏 C++ 知识造成的。你?
  • 请给我发一封电子邮件,我们可以直接交谈吗? warmspringwinds@gmail.com
猜你喜欢
  • 2011-07-11
  • 2020-09-09
  • 1970-01-01
  • 2015-04-24
  • 2014-08-25
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多