加载图像与openCV Mat c++
load image with openCV Mat c++
我想在openCV中使用Mat加载图像
我的代码是:Mat I = imread("C:/images/apple.jpg", 0);
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", I );
我在消息框中得到以下错误:
Unhandled exception at 0x70270149 in matching.exe: 0xC0000005: Access violation
reading location 0xcccccccc.
请注意,我包括:
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <iostream>
#include <math.h>
我之前已经讨论过很多次了,我想再做一次是没有意义的,但是代码是防御性的:如果方法/函数调用可能失败,请确保您知道它何时发生:
Mat I = imread("C:\images\apple.jpg", 0);
if (I.empty())
{
std::cout << "!!! Failed imread(): image not found" << std::endl;
// don't let the execution continue, else imshow() will crash.
}
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", I );
waitKey(0);
请注意,Windows的路径使用反斜杠而不是*nix系统上使用的标准
/
。传递文件名时需要转义反斜杠:C:\images\apple.jpg
如果使用imshow()
,则必须调用waitKey()
。
编辑:
如果是cv::imread()
抛出异常,我所知道的唯一解决方案是下载OpenCV源代码并在机器上构建它,因为重新安装OpenCV并不能解决这个问题。
我不知道你为什么没有include问题因为通常是。hpp文件所以你应该输入
#include <opencv2/highgui/highgui.hpp>
#include <opencv2coreeigen.hpp>
但是你的代码看起来不错,但是在你的imshow之后添加一个cv::waitKey(0);
您是否检查过imread后是否存在I ?可能文件读取失败
读取文件后执行if ( I.empty() )
检查是否失败
您是否使用visual studio 2010来运行OpenCV代码?如果是,尝试在发布模式下编译。
正如@karlphillip所指出的,无论这听起来多么琐碎,但这句话"在传递文件名:C:imagesapple.jpg时,您需要转义反斜杠"确实很重要。
相关文章:
- Difference in displaying cv2 Mat
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 将CHW格式的浮点向量转换为cv::Mat
- C++中的openCV Mat访问冲突
- OpenCV 和从 OutputArrays 或 (Mat) 读取数据
- 使用 mat.at<uchar>(i,j) 的 opencv C++中的矩阵赋值错误
- C++:从GPU内存(cudaMemcpy2D)获取BGR图像(cv::Mat)
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 将 cv::mat 转换为 QImage
- 两个垫子的 OpenCV 数据是相同的,但使用 Mat::at 检索时的值已损坏
- 将 cv::Mat 转换为 std::vector 的通用函数
- 如何通过引用传递OpenCV MAT
- 在 QML VideoOutput 中将 cv::mat 显示为 QVideoFrame
- Read OpenCV Mat 16bit to QImage 8bit Greyscale
- 将本地 OpenCV Mat 变量声明为静态以防止重新分配
- 将 OpenCv Mat 从 C++ 传递给 Python
- 如何发送 Mat H=findHomography 返回 Matlab
- 将帧从 h264 流解码到 OpenCV Mat
- 如何将 cv::Mat & Img 复制到未签名的 char* img?opencv
- 如果函数使用 OPENCV Mat 作为输入,如何编写头文件?