OpenCV编程->can not open opencv/cv.h

本文介绍了解决在Visual Studio 2012中使用OpenCV遇到的包含文件找不到的问题,并给出了具体的修改方法及运行示例代码。

出现错误:

1>d:\用户目录\documents\visual studio 2012\projects\test1\test1\test1.cpp(7): fatal error C1083: 无法打开包括文件:“opencv/cv.h”: No such file or directory

========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

解决方案:

 



修改如下:


编译运行后:


运行源码:

#include<iostream>  
#include <opencv/cv.h>    
#include <opencv2/opencv.hpp>
/*
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
*/
#pragma comment(lib,"opencv_core248d.lib")
#pragma comment(lib,"opencv_highgui248d.lib")
using namespace cv;  

int main()  
{  
	// 读入一张图片(游戏原画)  
	Mat img=imread("fruits.jpg");  
	// 创建一个名为 "游戏原画"窗口  
	cvNamedWindow("游戏原画");  
	// 在窗口中显示游戏原画  
	imshow("游戏原画",img);  
	// 等待6000 ms后窗口自动关闭  
	system("pause");
	waitKey(6000);  
}  
在此有两个注意的小点:

1.在链接库里添加lib有些麻烦,也可以在源码里写:

#pragma comment(lib,"opencv_core248d.lib")
#pragma comment(lib,"opencv_highgui248d.lib")
2.分析cv.h 文件

#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/flann/flann.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/legacy/compat.hpp"
在此我们可以得出,包含目录应该在opencv2目录的文件夹上一级,也就是include文件夹。






在提供的代码中,`cvtColor`函数报错 `(-215:Assertion failed) !_src.empty() in function 'cvtColor'`,这表明传递给 `cvtColor` 函数的源图像 `img` 为空。问题可能出在 `imread` 函数未能正确读取图像文件。 以下是修改后的代码,添加了对图像读取是否成功的检查: ```cpp #include <iostream> #include <string> #include <opencv4/opencv2/opencv.hpp> #include <opencv4/opencv2/core.hpp> #include <opencv4/opencv2/highgui.hpp> #include <opencv4/opencv2/imgproc.hpp> #include <opencv4/opencv2/objdetect.hpp> #include <opencv4/opencv2/imgproc/types_c.h> using namespace std; using namespace cv; int main(int argc, char *argv[]) { std::string filepath("test.jpeg"); Mat img, gray; img = imread(filepath, IMREAD_COLOR); // 检查图像是否成功读取 if (img.empty()) { cerr << "Could not open or find the image" << endl; return -1; } cvtColor(img, gray, CV_BGR2GRAY); CascadeClassifier classifier; if (!classifier.load("haarcascade_frontalface_default.xml")) { cerr << "Error loading face cascade classifier" << endl; return -1; } Scalar color = Scalar(0, 255, 255); vector<Rect> faceRects; classifier.detectMultiScale(gray, faceRects, 1.2, 3, 0, Size(32, 32)); for (size_t i = 0; i < faceRects.size(); i++) { rectangle(img, faceRects[i], color); } namedWindow("Display window", WINDOW_AUTOSIZE); imshow("Display window", img); waitKey(0); return 0; } ``` 在上述代码中,添加了对 `imread` 函数返回值的检查,如果图像读取失败,程序会输出错误信息并终止。同时,也添加了对 `CascadeClassifier` 加载分类器文件是否成功的检查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值