错误1error C2678: 二进制“!=”: 没有找到接受“std::ifstream”类型的左操作数的运算符(或没有可接受的转换)d:\documents\visual studio 2013\
【原代码】
string bow_path = string(DATA_FOLDER) + string(“bow.txt”);
std::ifstream read_file(bow_path);
if (read_file!=0)
{
cout << “BOW 已经准备好…” << endl;
}
else{
// 对于每一幅模板,提取SURF算子,存入到vocab_descriptors中
multimap ::iterator i = train_set.begin();
for (;
i != train_set.end();
i++)
{
vectorkp;
string cate_nam = (*i).first;
Mat tem_image = (*i).second;
Mat imageDescriptor;
featureDecter->detect(tem_image, kp);
bowDescriptorExtractor->compute(tem_image, kp, imageDescriptor);
//push_back(Mat);
在原来的Mat的最后一行后再加几行,元素为Mat时, 其类型和列的数目 必须和矩阵容器是相同的
allsamples_bow[cate_nam].push_back(imageDescriptor);
}
//简单输出一个文本,为后面判断做准备
std::ofstream ous(bow_path);
//wei
ous << “flag”;
cout << “bag of words构造完毕…” << endl;
}
【错误1error C2678: 二进制“!=”: 没有找到接受“std::ifstream”类型的左操作数的运算符(或没有可接受的转换)d:\documents\visual studio 2013\】【read_file!=0代码出现2678错误】
改为!read_file然后将if else {}的代码互换即可
即
【改后代码】
string bow_path = string(DATA_FOLDER) + string(“bow.txt”);
std::ifstream read_file(bow_path);
if (!read_file)
{
// 对于每一幅模板,提取SURF算子,存入到vocab_descriptors中
multimap ::iterator i = train_set.begin();
for (;
i != train_set.end();
i++)
{
vectorkp;
string cate_nam = (*i).first;
Mat tem_image = (*i).second;
Mat imageDescriptor;
featureDecter->detect(tem_image, kp);
bowDescriptorExtractor->compute(tem_image, kp, imageDescriptor);
//push_back(Mat);
在原来的Mat的最后一行后再加几行,元素为Mat时, 其类型和列的数目 必须和矩阵容器是相同的
allsamples_bow[cate_nam].push_back(imageDescriptor);
}
//简单输出一个文本,为后面判断做准备
std::ofstream ous(bow_path);
//wei
ous << “flag”;
cout << “bag of words构造完毕…” << endl;
}
else{
cout << “BOW 已经准备好…” << endl;
}
推荐阅读
- 人脸识别|【人脸识别系列】| 实现自动化妆
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- opencv|图像处理之椒盐噪声的添加与去除
- 人脸识别|【人脸识别系列】| 实现人脸截图保存并编写128维特征向量
- opencv|网络爬虫入门练习
- OpenCV|【OpenCV 完整例程】89. 带阻滤波器的传递函数
- OpenCV|【OpenCV 完整例程】90. 频率域陷波滤波器
- OpenCV|【OpenCV 完整例程】22. 图像添加非中文文字
- OpenCV|【OpenCV 完整例程】91. 高斯噪声、瑞利噪声、爱尔兰噪声
- opencv|python+opencv车道线,实线虚线的检测