测试opencv不显示图像!!
vs2010+opencv2.4.4,所有配置都没问题,编译也没有报错,但是运行代码后不显示图像窗口这是怎么回事????//test2.cpp:定义控制台应用程序的入口点...
vs2010+opencv2.4.4,所有配置都没问题,编译也没有报错,但是运行代码后不显示图像窗口这是怎么回事????
// test2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
const char* imagename = "Lena.jpg";
//从文件中读入图像
Mat img = imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//显示图像
imshow("image", img);
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}
以下是运行输出窗口的内容:
“test2.exe”: 已加载“D:\Program Files\opencv\Projects\test2\Debug\test2.exe”,已加载符号。
“test2.exe”: 已加载“C:\Windows\System32\ntdll.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\System32\opencv_core244d.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\System32\msvcp100d.dll”,已加载符号。
“test2.exe”: 已加载“C:\Windows\System32\msvcr100d.dll”,已加载符号。
“test2.exe”: 已加载“C:\Windows\System32\opencv_highgui244d.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\System32\avifil32.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\System32\shlwapi.dll”,Cannot find or open the PDB file
程序“[8596] test2.exe: 本机”已退出,返回值为 -1 (0xffffffff)。 展开
// test2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
const char* imagename = "Lena.jpg";
//从文件中读入图像
Mat img = imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//显示图像
imshow("image", img);
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}
以下是运行输出窗口的内容:
“test2.exe”: 已加载“D:\Program Files\opencv\Projects\test2\Debug\test2.exe”,已加载符号。
“test2.exe”: 已加载“C:\Windows\System32\ntdll.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\System32\opencv_core244d.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\System32\msvcp100d.dll”,已加载符号。
“test2.exe”: 已加载“C:\Windows\System32\msvcr100d.dll”,已加载符号。
“test2.exe”: 已加载“C:\Windows\System32\opencv_highgui244d.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\System32\avifil32.dll”,Cannot find or open the PDB file
“test2.exe”: 已加载“C:\Windows\System32\shlwapi.dll”,Cannot find or open the PDB file
程序“[8596] test2.exe: 本机”已退出,返回值为 -1 (0xffffffff)。 展开
展开全部
程序的返回值是-1,说明程序进入了这个判读语句中:
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
单步调试你的程序,仔细看看这步的运行结果:Mat img = imread(imagename);
执行这个语句之后Mat img这个类成员是否成功读入了图像?
如果没有,检查一下你的读入图像文件路径是否正确,文件名是否有错误。
希望能帮到你。
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
单步调试你的程序,仔细看看这步的运行结果:Mat img = imread(imagename);
执行这个语句之后Mat img这个类成员是否成功读入了图像?
如果没有,检查一下你的读入图像文件路径是否正确,文件名是否有错误。
希望能帮到你。
追问
我发现图像路径必须是绝对路径才行,这是为什么?
追答
读入的文件使用方式有两种,一种是绝对路径,一种是相对路径。
比如:平时我们直接读入的图像,假设在windows环境中,图像与工程下源文件放在一起,
是Mat img = imread("lena.jpg");
这个其实完整写应该是imread( ".\lena.jpg" );,就是相对路径的用法
" . "一个点代表当前目录,两个点代表上级目录 " .. ",
如果是在上级文件夹中的”Photo“文件夹中,可以这样写:
Mat img = imread( "..\Photo\lena.jpg" );
一般用"."和”.."都是相对路径的用法
除了相对路径,还有就是绝对路径了。
希望能帮到你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询