0
我昨天切換到新的筆記本電腦,並決定下載新的VS 2017社區。在我的舊筆記本電腦上,我使用了VS 2015 Enterprise。我有多箇舊項目給我這些錯誤。我已搜查甚廣,但只涉及的問題,我能找到的:錯誤的從vs15更新到vs17 660後出現錯誤
Variable is not a type name error
截圖:
一個例子項目中,這種情況正在發生:
來源.cpp:
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
//Prototypes
int useFilter2D(int argc, char** argv);
int main(int argc, char** argv)
{
useFilter2D(argc,argv);
waitKey(0);
}
Mat image_canny, image_gray_canny;
Mat dst, detected_edges;
int edgeThresh = 1;
int lowThreshold;
int const max_lowThreshold = 100;
int ratio = 3;
int kernel_size = 3;
char* window_name = "Result";
void CannyThreshold(int, void*)
{
/// Reduce noise with a kernel 3x3
blur(image_gray_canny, detected_edges, Size(3, 3));
/// Canny detector
Canny(detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size);
/// Using Canny's output as a mask, we display our result
dst = Scalar::all(0);
image_canny.copyTo(dst, detected_edges);
imshow(window_name, dst);
}
int useFilter2D(int argc, char** argv)
{
Mat src, src_gray;
Mat grad;
char* window_name = "Result Sobel";
int scale = 1;
int delta = 0;
int ddepth = CV_16S;
// Controle of er een argument aan het programma is meegegeven.
if (argc != 2)
{
cout << " Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
src = imread(argv[1], CV_LOAD_IMAGE_COLOR);
// Controleer of alles goed is gegaan
if (!src.data)
{
cout << "Could not open or find the image" << std::endl;
return -1;
}
// Laat de afbeelding zien in een apart window
namedWindow("Display window", WINDOW_AUTOSIZE);
imshow("Display window", src);
// convert to grey
GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT);
cvtColor(src, src_gray, CV_BGR2GRAY);
// Create window
namedWindow(window_name, CV_WINDOW_AUTOSIZE);
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;
/// Gradient X
Sobel(src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT);
convertScaleAbs(grad_x, abs_grad_x);
/// Gradient Y
Sobel(src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT);
convertScaleAbs(grad_y, abs_grad_y);
/// Total Gradient (approximate)
addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad);
imshow(window_name, grad);
waitKey(0);
return 0;
}
如果沒有看到導致此問題的[mcve]代碼,我們無法回答。雖然你「無法想象它是代碼」,我們仍然需要看到它。也許編譯器確實是錯誤的(不太可能),在這種情況下,我們需要代碼告訴你如何使它工作。或者(更可能)代碼實際上是不正確的,並且被用於「偶然」工作(由於VS <2017的獨立性),在這種情況下,我們需要再次查看它以告訴您問題是什麼。 – Angew
這些不是編譯器錯誤,但Intellisense不理解代碼。如果您更改最右側下拉列表中的篩選器以僅生成錯誤,它們將消失。 –
我添加了代碼Angew謝謝你通知我。另外@BoPersson的確是這個問題!感謝我一直在掙扎幾個小時。它是針對我沒有的Windows 8.1 sdk。 – Timon