版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xumeng7231488/article/details/78223309
1.在vs2013上配置opencv报错:
“在vs2015中配置Opencv,无法找到源文件”opencv2/opencv.hpp””
可能是配置时配置错位置了,一定要在debug|x64下配置
2.代码报错:
“float,return,;之类错误”
define那里不能换行,去掉\改到一行里面就可以了
3.fopen错误:
“fopen maybe unsafe,consider using fopen_s instead”
fopen文件自的文件位置在:*\build\include\opencv2\flann\logger.h中,但是如果将fopen替换为fopen_s将出现函数变化,参数个数和参数列表也变化的情况。
解决方法:更改预处理定义:
此方法转载自:http://blog.csdn.net/u012734441/article/details/39374577
项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,增加_CRT_SECURE_NO_DEPRECATE
这样就可以解决vs201X报错的问题了。
4.斑马线识别实例
(1)代码
代码原创:http://blog.csdn.net/dawn1227/article/details/64125542
有几行修改
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
#define cvQueryHistValue_1D( hist, idx0 )((float)cvGetReal1D((hist)->bins, (idx0)))
int bSums(Mat src)
{
int counter = 0;
//迭代器访问像素点
Mat_<uchar>::iterator it = src.begin<uchar>();
Mat_<uchar>::iterator itend = src.end<uchar>();
for (; it != itend; ++it)
{
if ((*it)>0) counter += 1;//二值化后,像素点是0或者255
}
return counter;
}
int main()
{
Mat image = imread("pic.jpg", CV_LOAD_IMAGE_COLOR);
Mat I;
cvtColor(image, I, CV_BGR2GRAY);
Mat roi1(I, Rect(0, 260, 1024, 100));
threshold(roi1, roi1, 180, 255, CV_THRESH_BINARY); //灰度变二值
cout << "读取成功" << endl;
namedWindow("1", CV_WINDOW_AUTOSIZE);
imshow("1", roi1);
cout << "显示1成功" << endl;
waitKey(500);
int a = bSums(roi1);//调用函数bSums
cout << "bSum函数调用成功" << endl;
imshow("A", roi1);
cout << "显示2成功" << endl;
//imwrite("pic2.jpg", roi1);
//cout << "读写成功" << endl;
if (a > 5000) {
cout << "注意:前方有斑马线" << endl;
}
else cout << "什么都没有啊!" << endl;
waitKey();
return 0;
}
(2)识别结果:
注意:前方有斑马线