C++ line 1322 异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ line 1322 异常相关的知识,希望对你有一定的参考价值。
使用opencv2.4.9 + vs2010 在程序运行结束时报错,错误提示如下图出错的地方应该是这两句vector<Vec4i> lines; HoughLinesP(contours, lines, 1, CV_PI/180, 150, 50, 10 );代码如下:#include <opencv2/opencv.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/core/core.hpp>#include <iostream>using namespace std;using namespace cv;int main() Mat image = imread("E:/namespace/photo_tupian/2018-04-26-03.bmp"); Mat imageRGB[3]; split(image, imageRGB); for (int i = 0; i < 3; i++) equalizeHist(imageRGB[i], imageRGB[i]); Mat img1; merge(imageRGB, 3, img1); Mat contours,grayImage; Canny(img1, contours, 125, 350,3); cvtColor(contours, grayImage, COLOR_GRAY2BGR); //contours = 255 - contours; cv::Mat contoursInv; // inverted image cv::threshold(contours, contoursInv, 128, // values below this 255, // becomes this cv::THRESH_BINARY_INV); imshow("Canny", contoursInv); waitKey(30); imshow("灰度图", grayImage); waitKey(30); vector<Vec4i> lines; HoughLinesP(contours, lines, 1, CV_PI/180, 150, 50, 10 ); Mat ne1w1(contours.rows,contours.cols, CV_8UC3, Scalar(0,0,0) ); for( size_t i = 0; i < lines.size(); i++ ) Vec4i l = lines[i]; line( ne1w1, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(255,255,255),1, CV_AA); imshow("边缘检测后的图", ne1w1); waitKey(30); return 0;
https://blog.csdn.net/upc_xbt/article/details/53666308 参考技术A 可以这样试下
std::vector<Vec4i> lines;
HoughLinesP(contours, lines, 1, CV_PI/180, 150, 50, 10 );
如果还是不行,可以使用捕捉异常的函数捕捉下异常追问
能不能麻烦你几分钟,给改一下代码,看能不能运行出来,之前你提出的更改依然出现这个问题,而且用try 和 catch我不知道改怎么进行捕获,很烦,希望大神能给个神助攻,感激不尽
为啥 C++ 预处理文件中仍然存在 #line 预处理器指令?
【中文标题】为啥 C++ 预处理文件中仍然存在 #line 预处理器指令?【英文标题】:Why there is still #line preprocessor directive present in a c++ preprocessed file?为什么 C++ 预处理文件中仍然存在 #line 预处理器指令? 【发布时间】:2021-06-05 11:03:45 【问题描述】:我知道预处理器的工作是处理 c++ 程序的所有预处理器指令并准备好代码进行编译。但我发现几乎所有预处理文件中都存在#line 指令。编译器在编译代码时如何理解预处理器指令?
【问题讨论】:
预处理器的输出被设计为被匹配的编译器读取,预处理器如何将元数据传递给编译器并没有被c++标准定义 【参考方案1】:为什么在 c++ 预处理文件中仍然存在 #line 预处理器指令?
因为编译器需要有关在预处理器扩展指令之前代码所在的行的信息。该信息用于报告错误所在的确切文件、行和列的诊断消息。
编译器在编译代码时如何理解预处理器指令?
我不确定#line
在技术上是否是预处理器指令。但是编译器理解它的原因与它理解任何东西的原因相同:实现编译器的聪明人让它工作。
【讨论】:
你说得对,它是关于诊断消息的,但#line
的作用远不止保留原始行号。它还可以更改行号(和文件命名),这是它的主要目的。主要用于生成 C 代码的编译器前端。当您编译 C 代码时,您希望诊断和调试信息参考原始源代码,而不是生成的 C 代码。 (而且,是的,从技术上讲,它是一个预处理器指令)
嗨,Pete Becker...我还有其他类似的预处理器指令,例如#line,它们仍然存在于预处理文件中......?以上是关于C++ line 1322 异常的主要内容,如果未能解决你的问题,请参考以下文章
JSONArray 抛出 JSONArray 文本必须以 '[' at 1 [character 2 line 1] 开始异常