【问题标题】:opencv imgproc error ( C++ VS2012 )opencv imgproc 错误(C++ VS2012)
【发布时间】:2017-04-18 07:46:35
【问题描述】:

好的,下面是简单的代码,[底部的错误快照和输出日志]

更新:我已经将库名称(Debug+Release)从 248 更改为 2413)

Update2:开启:配置属性 -> C/C++ -> 预处理器 -> 预处理到文件将错误更改为 LNK1104 错误>第 1 行。

#include<opencv2\highgui\highgui.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(void)
{
       Mat frame;
       frame=imread("room.jpg",CV_LOAD_IMAGE_UNCHANGED);
       while (waitKey(30)!=27) //27 is ascii equivalent of esc key
       {
              imshow("Image", frame); //loop line 1
       }
}

这是我在本教程 (https://www.youtube.com/watch?v=v-VgWxkVp2w) 中用于 Visual Studio 2012 的 OpenCV 配置设置


  1. 下载 OpenCV 2.4.8(但我使用的是 2413 版本)

  2. 创建 Win32 控制台应用程序

  3. 配置 opencv.. 3.1。菜单项目----$ProjectName 属性

3.2。选择 Configuration Manager... 并添加 x64 平台

3.3。在配置字段中,选择所有配置 3.3.1。在配置属性----C/C++----附加包含目录,添加opencv包含文件夹

$opencv\build\include
$opencv\build\opencv
$opencv\build\opencv2 

注意:$opencv 是您安装 opencv 的文件夹

3.3.2。在配置属性----链接器----附加库目录,添加opencv库文件夹 $opencv\build\x64\vc11\lib

3.4。在配置字段中,选择调试模式 3.4.1。在 Configuration Properties ---- Linker ---- Additional dependencies ----

添加依赖库 opencv_stitching248d.lib opencv_contrib248d.lib opencv_videostab248d.lib opencv_superres248d.lib opencv_nonfree248d.lib opencv_gpu248d.lib opencv_ocl248d.lib opencv_legacy248d.lib opencv_ts248d.lib opencv_calib3d248d.lib opencv_features2d248d.lib opencv_objdetect248d.lib opencv_highgui248d.lib opencv_video248d.lib opencv_photo248d.lib opencv_imgproc248d.lib opencv_flann248d.lib opencv_ml248d.lib opencv_core248d.lib

注意:以上文件位于 .\opencv\build\x64\vc11\lib\

3.5。在配置字段中,选择发布模式 3.5.1。在 Configuration Properties ---- Linker ---- Additional dependencies ---- 添加依赖库 opencv_stitching248.lib opencv_contrib248.lib opencv_videostab248.lib opencv_superres248.lib opencv_nonfree248.lib opencv_gpu248.lib opencv_ocl248.lib opencv_legacy248.lib opencv_ts248.lib opencv_calib3d248.lib opencv_features2d248.lib opencv_objdetect248.lib opencv_highgui248.lib opencv_video248.lib opencv_photo248.lib opencv_imgproc248.lib opencv_flann248.lib opencv_ml248.lib opencv_core248.lib 注意:以上这些文件位于 .\opencv\build\x64\vc11\lib\

3.6。将 $opencv\build\x64\v11\bin 添加到系统环境路径 3.7.重启 Visual Studio


所以以前它使用 VC11,然后我在我的代码中包含了 imgproc,从那以后这个错误似乎并没有消失。我什至尝试使用 VC12。

为什么我会看到这个错误,我甚至没有在我的代码中使用 imgproc

是的,我一直是一项很好的运动,我搜索了 20-25 个相关帖子,但徒劳无功。所以我真的需要专家的建议,谁可以成为这方面的初学者,因为从代码中可以看出,我完全是 OpenCV 的新手

在此先感谢各位。


输出:

1>----- 构建开始:项目:OpenCV2,配置:Debug x64 ------ 1> 源.cpp 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(141): 错误 C2146: 语法错误: 缺少';'在标识符“ksize”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(141):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(142): 错误 C2146: 语法错误: 缺少';'在标识符“锚”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(142):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(224):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(224): 错误 C2143: 语法错误: 在 'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(234):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(234): 错误 C2143: 语法错误: 在 'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(241):错误 C2061:语法错误:标识符“大小” 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(243):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(243): 错误 C2143: 语法错误: 在 '&' 之前缺少 ',' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(249):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(249): 错误 C2143: 语法错误: 在 '&' 之前缺少 ',' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(260): 错误 C2146: 语法错误: 缺少';'在标识符“ksize”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(260):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(261): 错误 C2146: 语法错误: 缺少';'在标识符“锚”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(261):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(263): 错误 C2146: 语法错误: 缺少';'在标识符“wholeSize”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(263):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(264): 错误 C2146: 语法错误: 缺少';'在标识符“roi”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(264):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(267): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(267):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(267): 错误 C2238: ';'前面的意外标记 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(269): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(269):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(269): 错误 C2238: ';'前面的意外令牌 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(270): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(270):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(270): 错误 C2238: ';'前面的意外令牌 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(271): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(271):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(271): 错误 C2238: ';'前面的意外令牌 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(272): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(272):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(272): 错误 C2238: ';'前面的意外令牌 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(274): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(274):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(274): 错误 C2238: ';'前面的意外令牌 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(276): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(276):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(276): 错误 C2238: ';'前面的意外令牌 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(277): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(277):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(277): 错误 C2238: ';'前面的意外令牌 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(278): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(278):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(278): 错误 C2238: ';'前面的意外令牌 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(254):错误 C2065:'filter2D':未声明的标识符 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(286):错误 C2065:'InputArray':未声明的标识符 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(286):错误 C2146:语法错误:在标识符“内核”之前缺少“)” 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(286): 错误 C2059: 语法错误: ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(294):错误 C2143:语法错误:缺少 ';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(294):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(294):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(300): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(300):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(300):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(306): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(306):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(306):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(314): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(314):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(314):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(320): 错误 C2146: 语法错误: 缺少';'在标识符“getGaussianKernel”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(320):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(323): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(323):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(323):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(327):错误 C2065:'OutputArray':未声明的标识符 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(327):错误 C2146:语法错误:在标识符 'kx' 之前缺少 ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(327): 错误 C2182: 'getDerivKernels' : 非法使用类型 'void' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(329): 错误 C2059: 语法错误: ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(331): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(331):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(331):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(335): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(335):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(335):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(338): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(338):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(338): 错误 C2086: 'int cv::Ptr': 重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(342): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(342):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(342): 错误 C2086: 'int cv::Ptr': 重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(348): 错误 C2146: 语法错误: 缺少';'在标识符“getGaborKernel”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(348):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(348):错误 C2086:'int cv::Mat':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(320) : 见 'cv::Mat' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(348):错误 C2065:“大小”:未声明的标识符 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(348):错误 C2146:语法错误:在标识符 'ksize' 之前缺少 ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(349): 错误 C2059: 语法错误: ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(358): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(358):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(358):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(360): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(360):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(360):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(362): 错误 C2143: 语法错误: 缺少';'在'D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(362):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(362):错误 C2086:'int cv::Ptr':重新定义 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : 见 'cv::Ptr' 的声明 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(366): 错误 C2146: 语法错误: 缺少';'在标识符“morphologyDefaultBorderValue”之前 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(366): error C2433: 'Scalar' : 'inline' not allowed on data declarations 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(366):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(366): error C2825: 'cv::Scalar': must be a class or namespace when after '::' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(366): error C2039: 'all' : is not a member of 'global namespace'' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(366): error C2146: syntax error : missing ';' before identifier 'all' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(366): error C3861: 'all': identifier not found 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(369): error C2143: syntax error : missing ';' before '<' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(369): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(369): error C2086: 'int cv::Ptr' : redefinition 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : see declaration of 'cv::Ptr' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(377): error C2146: syntax error : missing ';' before identifier 'getStructuringElement' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(377): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(377): error C2086: 'int cv::Mat' : redefinition 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(320) : see declaration of 'cv::Mat' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(377): error C2061: syntax error : identifier 'Size' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(379): error C2143: syntax error : missing ';' before '<' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(379): error C2182: 'Ptr' : illegal use of type 'void' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(379): error C2086: 'int cv::Ptr' : redefinition 1> D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(289) : see declaration of 'cv::Ptr' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(379): error C2988: unrecognizable template declaration/definition 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(379): error C2059: syntax error : '<' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(379): error C2039: 'delete_obj' : is not a member of 'global namespace'' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(387):错误 C2065:'InputArray':未声明的标识符 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(387):错误 C2146:语法错误:在标识符 'src' 之前缺少 ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(387): 错误 C2182: 'medianBlur' : 非法使用类型 'void' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(387): 错误 C2059: 语法错误: ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(389):错误 C2065:'InputArray':未声明的标识符 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(389):错误 C2146:语法错误:在标识符 'src' 之前缺少 ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(389): 错误 C2182: 'GaussianBlur' : 非法使用类型 'void' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(392): 错误 C2059: 语法错误: ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(394):错误 C2065:'InputArray':未声明的标识符 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(394):错误 C2146:语法错误:在标识符 'src' 之前缺少 ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(394): 错误 C2182: 'bilateralFilter' : 非法使用类型 'void' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(396): 错误 C2059: 语法错误: ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(398):错误 C2065:'InputArray':未声明的标识符 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(398):错误 C2146:语法错误:在标识符 'src' 之前缺少 ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(398): 错误 C2182: 'adaptiveBilateralFilter' : 非法使用类型 'void' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(400): 错误 C2059: 语法错误: ')' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(400):致命错误C1003:错误计数超过100;停止编译 ========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========


ERROR SCREENSHOT

【问题讨论】:

  • "下载 OpenCV 2.4.8(但我使用的是 2413 版本)" -- 嗯?
  • 任何人,我愿意尝试,因为我是新人。但这如何证明我的 OpenCV 2.4.1.3 版本最初有效?
  • #include
  • 版本号是否应该在这里有所作为?我刚刚打开了 OpenCV opencv.org/downloads.html 的下载页面,并且找不到 v2.4.8。我现在该怎么办?
  • @DanMašek 感谢您的评论,请帮助我到达那里。

标签: c++ opencv visual-studio-2012


【解决方案1】:

这是一个编译器错误(不是链接器错误),所以我猜它应该与头文件有关。 你不是在同一个地方安装了不同版本的 OpenCV 吗?那会把事情搞混。 尝试删除所有 opencv 文件并重新开始。

【讨论】:

  • 不,我的电脑上没有安装其他版本的 OpenCV。有两个事实一直困扰着我。 1.为什么它以前可以工作而现在不行(在我的代码中包含了 imgproc 之后,后来删除它并没有做得更好)? 2. 为什么错误日志说错误在imgproc库中?已经两天了,我还在为这个问题摸不着头脑。你能认识能帮助我的人吗?非常感谢您的回答,我很想找到最终解决我问题的答案。
  • 你确定没有误修改opencv头文件?检查第一个错误(imgproc.hpp(141)),看看是否有什么奇怪的地方。或者,检查文件时间戳。
  • 我使用相同的配置创建了另一个项目,仍然是同样的错误。如果是头文件问题,它应该已经消失了。但我全神贯注,如果您认为自己在做某事,请告诉我逐步说明,我发誓我会毫无疑问地遵循它。
  • 创建新的 Visual Studio 项目不会清理 opencv 头文件。请检查 imgproc.hpp 并找出导致语法错误的确切原因。然后你就会接近问题了。
  • 太好了,让我们专注于此。问题是我无法理解错误,输出日志就在那里,我对 OpenCV 和 Visual Studio 完全陌生。 (Java、HTML、C# 本来是我的菜)告诉我你需要什么,文件、文本、任何东西……我会在线程上更新它或创建一个临时博客供你阅读。
【解决方案2】:

在项目选项 (3.3) 中,您只需要以下附加包括:

$opencv\build\include

D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(141):错误 C2146:语法错误:缺少 ';'在标识符 'ksize' 1>D:\OpenCV\opencv\build\include\opencv2\imgproc\imgproc.hpp(141) 之前:错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int

由于在 "opencv2/core/core.hpp" 标头中声明的 Size 未声明而导致的错误。其他类型如InputArrayOutputArray 也在那里声明。 core.hpp#include &lt;opencv2\highgui\highgui.hpp&gt; 一起包含。检查core.hpp 没有损坏(例如,不是空的)。

如果您使用 Visual Studio 2012 Ultimate,您可以生成 include graph 并检查 imgproc.hpp 的位置。对于上面的程序,它应该如下图所示:

如您所见,imgproc.hpp 标头不会自动包含在内。要修复错误,您应该找到包含 imgproc.hpp 的位置。我建议检查Source.cpp 文件的预处理器输出。要做到这一点,请按照说明here。查看结果Source.i 文件并找到包含imgproc.hpp 的位置。

更新:

在您的Source.i 中,以下行包括imgproc.hpp

#line 2 "d:\\program files (x86)\\microsoft visual studio 11.0\\vc\\include\\iosfwd"
#line 1 "d:\\opencv\\opencv\\build\\include\\opencv2\\imgproc\\imgproc.hpp"

这些行来自#include "opencv2/core/core.hpp" 中包含的标准标题。我不知道为什么这个随机标题包含在那里。

似乎有一种魔法可以禁用标准标头包含。在您的预处理器定义中定义SKIP_INCLUDES。在解决方案资源管理器中打开 Project Properties -&gt; C\C++ -&gt; Preprocessor -&gt; Preprocessor Definitions 并在此处添加 SKIP_INCLUDES

【讨论】:

  • 你也可以在这里发Source.i的链接,我会检查的。
  • 按照您的指示, 1. Additional Include 现在只有:D:\OpenCV\opencv\build\include 2. 我检查了core.hpp,文件大约186kb,所以我认为它不是空。
  • 3.我没有 VS 2012 Ultimate,所以我无法生成包含图,但如果你推荐它,我可以得到 Ultimate。 4.你的最后一段对我来说有点太技术性了,我按照你推荐的链接,但不是很清楚。我只能做到这一点>>opencvtesting101.blogspot.com/2016/12/…
  • 5.因此,如果我认为目的是检查 imgproc.hpp 的标头,它应该显示在包含的文件中。所以我按照这些>>stackoverflow.com/questions/1137966/…>opencvtesting101.blogspot.com/2016/12/…(试图在主线程上更新它但我们已经夸大了字数限制,请忽略我的noodledom并感谢帮助,我很感激。)
  • 如果第 5 步没有帮助,请帮助我完成第 4 步。我在这里尽我所能确保在向您提出更多问题之前进行搜索和尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 2022-07-18
  • 1970-01-01
相关资源
最近更新 更多