一、imread函数无法读入图像问题
通常我们为了简单起见,是把所有的库(.lib)包括debug、release两个版本同时加载的。这样的话像下面的代码是可以正常工作的:
#include <opencv2\opencv.hpp>
#include<iostream>
using namespace cv;
void main()
{
IplImage *src;
src = cvLoadImage("lena.jpg");
cvNamedWindow("lena",CV_WINDOW_AUTOSIZE);
cvShowImage("lena",src);
cvWaitKey(0);
cvDestroyWindow("lena");
cvReleaseImage(&src);
}
但是imread函数则不行,比如:
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void main(){
//从文件中读入图像
Mat img = imread("lena.jpg");
//如果读入图像失败
if(img.empty()){
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//显示图像
imshow("image", img);
waitKey(); //此函数等待按键,按键盘任意键就返回
return 0;
}
只能是在两种模式下分别载入相应版本的.lib才行
二、NamedWindow窗口乱码问题

如上图中,image1部位显示乱码。
因在Visual Studio中配置"链接器->输入->附加的依赖项"中把全部的库文件都添加进去了(实际debug和release不同,debug下每个库文件最后都有个d),因此就出现了窗口名称乱码的问题。
解决方法:在Debug模式下,仅包含文件最后含有d的文件。
三、Error with OpenCV ROI

OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in
cv::Mat::Mat, file …\opencv\modules\core\src\matrix.cpp, line 323
根据提示信息,可知是由于ROI范围超过图像边界导致。
四、工作站服务没有启动
点击调试按钮后,弹出警告窗口:工作站服务没有启动!
原因:操作系统一些服务没有启动(被禁用)。
解决:
- 同时按下windows+r按键,输入services.msc后回车;
- 查找workstation服务,如果显示被禁用,右键属性,改为自动启动或手动启动,然后确定;
- 再重新启动workstation服务;
- 运行VS2010调试,故障解决;
- 如果没有解决,查看一下server服务是否也被禁用