我是OPENCV的新手。 现在,我尝试使用imread()显示图像,但是imread()不起作用(请继续返回空的垫子。)但是当我尝试通过imread()绘制线,圆等时,效果很好。

因此,我认为解决地址问题。 我尽了我所能,但仍然行不通。 我也用谷歌搜索了很多东西来解决它,但是我无法得到这个问题的任何答案。

我该怎么办? 我错过了什么错误吗?

我目前使用Windows 10,Visual Studio 2017和openCV 4.0.0 alpha。

这是我的代码。

#include <iostream>
#include <opencv2/opencv.hpp>

#ifdef _DEBUG
#pragma comment(lib,"opencv_world400d.lib")
#else
#pragma comment(lib,"opencv_world400.lib")
#endif

using namespace std;
using namespace cv;

int main()
{
    Mat image;
    image =imread("C:/Users/ymin/source/repos/Project1/Project1/BENZ.bmp",IMREAD_ANYCOLOR);
    if (image.empty()) 
    {std::cerr << "Could not open file" << std::endl; return (1);}
    imshow("image", image);
    waitKey();

    return 0;

}

#1楼 票数:0 已采纳

OpenCV文档中imread

如果无法读取图像(由于缺少文件,权限不正确,格式不受支持或格式无效),该函数将返回一个空矩阵。

这表明该文件不存在(可能是拼写错误?),您无权读取,其格式不受OpenCV识别或已损坏。

确保文件在您认为的位置,并且可读,并且已编译OpenCV以支持文件所用的格式。

(请注意,文件扩展名不决定其格式,您可以获取一个JPEG文件并将其重命名为具有.bmp扩展名,但它仍然是JPEG文件。)

  ask by 추영민 translate from so

未解决问题?本站智能推荐:

1回复

如何在OpenCV中访问矢量垫对象

我想将一些图片从文件加载到Mat对象(OpenCV),并将它们存储在矢量中。 进一步的OpenCV调用/对象需要向量(例如:AlignMTB)作为参数。 但是在用Mat对象填充矢量后,我只能访问我添加到矢量中的最后一个元素。 在示例中,我首先将图像加载到中间的Mat对象,然后将其转换为C
2回复

PNG图片无法在OpenCV中正确加载

我正在使用以下代码查看以下图像。 (如果看不到图像,请右键单击以上空间并保存图像。)图像为32位。 OpenCV显示白色图像。 它是白色箭头图像,周围带有alpha值。 请让我知道如何正确加载图像
2回复

带有IMREAD_COLOR的图像中不使用OpenCV,DFT函数

使用IMREAD_COLOR读取图像时,“ dft”函数将引发错误: 使用IMREAD_GRAYSCALE读取图像时,DFT功能可以正常工作。 但是我想用IMREAD_COLOR读取图像。 主功能
1回复

如何使用GPU将2个OpenCV垫相乘

在OpenCV中,我可以将RGB 1920 x 1080垫子乘以3 x 3 Mat来改变我的源Mat的颜色组成。 一旦我的源垫正确成形,我可以使用'*'运算符来执行乘法。 使用cv :: gpu :: GpuMat时,此运算符不可用。 我的问题是我如何格式化我的输入源Mat使用cv ::
3回复

OpenCV快速垫元素​​和邻居访问

我为矩阵使用OpenCV(C ++)Mat,希望尽快访问单个Mat元素。 在OpenCV教程中,我找到了有效访问的代码: 对于我的问题,我需要访问Mat元素及其相邻元素(i-1,j-1)进行计算。 如何修改给定的代码以访问单个mat元素及其周围的元素? 由于速度很重要,所以我要避免Ma
1回复

OpenCV填充垫,与VideoWriter一起使用

我有一个使用3字节颜色值的二维数组(OpenCV类型CV_8UC3 )表示的图像。 数组不是密集的,而是元素在4字节边界上对齐,即有1个字节的填充。 所以数组是格式的 我想使用OpenCV访问这些数据,而不是制作它的新副本。 但默认情况下打包类型为CV_8UC3 OpenCV Mat
1回复

OpenCV中不正确的图案图像生成

内容:OpenCV C ++中的图像处理。 要求是在外部Mat Image上创建大小为256 X 256的Mat模式的图块。 用户指定外部Mat Image的宽度和高度。 为此 ,我创建了以下OpenCV C ++函数: 如果您可以看到上面的else语句,则我尝试使第一个条件取反,
1回复

将泛洪输出(连接的像素)复制到新垫中

是否有一种方便的方法可以根据floodfill作业的输出来创建新的垫子? 我想获得仅包含被检测为连接到种子像素并在技术上进行洪水填充的像素的垫子。 猜猜我执行了floodFill方法到某个种子点,并且在连接时仅填充了总像素的1/4。 我只想将这些像素复制到一个新图像,该图像仅代表那些1/