【问题标题】:displaying an image in mat form以垫子形式显示图像
【发布时间】:2013-03-16 04:51:52
【问题描述】:

我正在尝试在 opencv 中读取 mat 形式的图像并显示它。 代码编译得很好,但是运行时会出现运行时错误,并且不显示图像。 这是我的代码:

#include "stdafx.h"
#include<cv.h>
#include<highgui.h>
#include<iostream>
using namespace cv;
using namespace std;

void main()
{
    Mat Img;
    Img=imread("C:/Documents and Settings/image1.jpg");
    cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);
    imshow( "Image", Img ); 
    cvWaitKey(0);
}

谁能告诉我哪里出错了?

【问题讨论】:

  • 错误说明了什么?给 imread 的路径中是否有有效的图像?
  • 这是一个“调试错误”,表示“应用程序已请求运行时以异常方式终止”。窗口打开但图像未显示@Barshan Das
  • 我想再问一件事,因为我是openCV的新手,所以你能指导我哪种数据格式对图像处理更有效,以便我专注于它...@Barshan Das
  • 1.你的代码对我来说看起来不错。它在我的机器上成功运行。确保您提供了正确的图像文件路径。 2.“数据格式”是什么意思?我无法理解。
  • 这是反斜杠 -> () 这是正斜杠 (/) en.wikipedia.org/wiki/Slash_%28punctuation%29 反斜杠用于转义字符。所以在文件路径中,如果我们需要使用\,我们必须使用\\。这不是正斜杠 / 的情况。所以我们不需要使用 //。只有 / 就足够了。您的控制台错误消息指出找不到图像文件。尝试一些无效的路径名,看看自己是否发生了同样的错误。确保使用有效的图像文件路径。还要检查是否没有权限问题。该程序应该有权访问所需的文件。

标签: opencv


【解决方案1】:

很可能imread() 失败了。除非您开始检查函数是否成功,否则您肯定会知道,这在您编写代码时非常重要。

它可能失败的原因有几个:

  • 您无权访问该文件。
  • 路径错误。

在你的情况下,它可能是第一个。所以把你的代码改成:

Mat Img;
Img = imread("C:\\Documents and Settings\\image1.jpg");
if (Img.empty()) {
    std::cout <<  "!!! Failed to open the file\n";
    return;
}

并注意文件路径的不同。

【讨论】:

  • 好吧,问题出在“imread()”上!!!,我尝试了两种给出路径的方法,但图像没有被读取!我不知道为什么会这样正在发生...我按照你说的做了,显示“无法打开文件”@karlphillip
  • 很确定文件之前应该有一个用户名。确保路径存在,并且您有权访问该文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2018-11-24
相关资源
最近更新 更多