首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何抑制OpenCV错误消息

如何抑制OpenCV错误消息
EN

Stack Overflow用户
提问于 2013-07-10 10:04:40
回答 1查看 6.4K关注 0票数 12

我正在使用g++和OpenCV2.4.6编写一个OpenCV项目

我有一些这样的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try 
{
    H = findHomography( obj, scene, CV_RANSAC );
}
catch (Exception &e)
{
    if (showOutput)
        cout<< "Error throwed when finding homography"<<endl;
    errorCount++;
    if (errorCount >=10)
    {
        errorCount = 0;
        selected_temp = -99;
        foundBB = false;
        bb_x1 = 0;
        bb_x2 = 0;
        bb_y1 = 0;
        bb_y2 = 0;
    }
    return -1;
}

当findHomography找不到东西时,会抛出错误。错误消息包括:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
OpenCV Error: Assertion failed (npoints >= 0 && points2.checkVector(2) 
== npoints && points1.type() == points2.type()) in findHomography, 
file /Users/dji-mini/Downloads/opencv- 2.4.6/modules/calib3d/src/fundam.cpp, 
line 1074
OpenCV Error: Assertion failed (count >= 4) in cvFindHomography, 
file /Users/dji-mini/Downloads/opencv-2.4.6/modules/calib3d/src/fundam.cpp, line 235

因为我知道在什么情况下会出现消息,所以我想取消显示这些错误消息。但我不知道该怎么做。

在旧版本的OpenCV中,似乎有一个"cvSetErrMode",根据其他文章,它在OpenCV 2.X中已经贬值了。那么我可以使用什么函数来抑制OpenCV错误消息呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-10 16:06:17

每次发生断言失败时都会调用cv::error()。默认行为是将断言语句输出到std::cerr

您可以使用未公开的cv::redirectError()函数来设置自定义错误处理回调。这将覆盖cv::error()的默认行为。您首先需要定义一个自定义的错误处理函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int handleError( int status, const char* func_name,
            const char* err_msg, const char* file_name,
            int line, void* userdata )
{
    //Do nothing -- will suppress console output
    return 0;   //Return value is not used
}

然后在抛出的代码之前设置回调:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    cv::redirectError(handleError);

try {
    // Etc...

如果您希望在任何时候恢复默认行为,可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cv::redirectError(nullptr);    //Restore default behavior; pass NULL if no C++11
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17567808

复制
相关文章
使用CSV模块和Pandas在Python中读取和写入CSV文件
CSV文件是一种纯文本文件,其使用特定的结构来排列表格数据。CSV是一种紧凑,简单且通用的数据交换通用格式。许多在线服务允许其用户将网站中的表格数据导出到CSV文件中。CSV文件将在Excel中打开,几乎所有数据库都具有允许从CSV文件导入的工具。标准格式由行和列数据定义。此外,每行以换行符终止,以开始下一行。同样在行内,每列用逗号分隔。
用户7466307
2020/06/16
20.1K0
JAVA读取csv文件_java读取csv文件某一列
当读取的是一个简单的csv文件,即文件的列字段中不包含分隔符时,可以使用BufferedReader或者Scanner类去读取
全栈程序员站长
2022/11/16
3.8K0
java读取写入CSV文件
[1]使用Split函数分成一个String[]: https://blog.csdn.net/u013555719/article/details/106029538
演化计算与人工智能
2020/08/14
4.1K0
java读取写入CSV文件
python中的可变数据类型和不可变数据类型
不允许变量的值发生变化,如果变量的值变化了,那么就是新建了一个对象;对于相同值的对象,在内存中只有一个对象。
西西嘛呦
2020/08/26
6350
python中如何打开csv文件_python如何读取csv文件
python如何读取csv文件,我们这里需要用到python自带的csv模块,有了这个模块读取数据就变得非常容易了。
全栈程序员站长
2022/09/16
7.9K0
python中如何打开csv文件_python如何读取csv文件
可变、不可变数据类型
可变数据类型:在id不变的情况下,value可改变(列表和字典是可变类型,但是字典中的key值必须是不可变类型)
py3study
2020/01/20
7670
csv写入与读取
import csv #若存在文件,则打开csv文件,若不存在,则新建文件 #若不设置newline=””,则每行数据会隔一行空包行 csvfile = open(“csv_test.csv”,”w”,newline = “”) #w是覆盖形写入,a是追加写入 #将文件加载到csv对象中 writer = csv.writer(csvfile) #写入一行数据 writer.writerow([‘姓名’,’年龄’,’电话’]) #多行数据写入 data = [ (‘张三’,’18’,’0291321332′), (‘李四’,’21’,’2932131934′) ] writer.writerows(data) #关闭csv对象 csvfile.close()
kirin
2021/03/11
1.1K0
Java工具集-Csv文件读取工具类
添加依赖 <!--开源的opencsv--> <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>4.6</version> </dependency> 代码示例 import java.io.FileInputStream; import java.io.FileNot
cwl_java
2020/05/01
2K0
在python中使用csv读写CSV 原
1.一般读写方式 # 读取csv文件 import csv with open('some.csv', 'rb') as f: # 采用b的方式处理可以省去很多问题 reader = csv.reader(f) for row in reader: # do something with row, such as row[0],row[1] import csv with open('some.csv', 'wb') as f: # 采用b的方式
晓歌
2018/08/15
1.1K0
[译] 为什么String在Java中是不可变的
String 在 Java 中是不可变的。 不可变类只是一个无法修改其实例的类。 创建实例时,将初始化实例中的所有信息,并且无法修改信息。 不可变类有许多优点。 本文总结了为什么 String 设计为不可变的。 这篇文章从内存,同步和数据结构的角度说明了不变性概念。
haifeiWu
2020/02/10
1.3K0
jmeter读取csv文件
操作步骤: 1.读取csv文件 2.编辑httpSampler
互联网金融打杂
2018/08/02
1.5K0
jmeter读取csv文件
Tensorflow | 读取csv文件
结果好长,给出关键的部分: INFO:tensorflow:Saving evaluation summary for step 12001: accuracy = 0.966667, loss = 0.461221 Accuracy: 0.966667
努力在北京混出人样
2019/02/18
1.8K0
在python中读取和写入CSV文件(你真的会吗?)「建议收藏」
注意,打开文件时应指定格式为w, 文本写入. 打开文件时,指定不自动添加新行newline=‘’,否则每写入一行就或多一个空行。
全栈程序员站长
2022/09/16
5.2K0
在python中读取和写入CSV文件(你真的会吗?)「建议收藏」
可变与不可变数据类型
根据可变数据类型与不可变数据类型的概念,只需要在改变value值的同时,使用id()函数查看变量id值是否变化就可以知道这种数据类型是可变的还是不可变的了
全栈程序员站长
2022/07/21
4800
Java读取csv文件的三种方式
最近需要进行对数据库的数据进行导入导出,之前使用的方式是,同时接到两台数据库上,进行读写操作;
JQ实验室
2022/09/29
9K0
Java读取pkl文件_theano csv到pkl文件
my_data = genfromtxt(csvFile, delimiter=’,’, skip_header=1)
全栈程序员站长
2022/09/30
1.3K0
Java Varargs 可变参数使用
"Varargs"是 “variable number of arguments”的意思。有时候也被简单的称为 “variable arguments”。
HoneyMoose
2020/02/14
1.2K0
go语言读取CSV文件
package main import ( "encoding/csv" "fmt" "io/ioutil" "strings" ) // 游戏读取数据,读取游戏配置数据 func ReadCsv_ConfigFile_Fun(fileName string) bool { // 获取数据,按照文件 fileName = "./csv/" + fileName cntb, err := iouti
李海彬
2018/03/22
6.5K0
Python读取CSV和Excel
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列.
Minerva
2020/05/21
3.4K0
Python学习:读取csv文件
CSV是Conma Sepatrate Values(逗号分隔值)的缩写,文档的内容是由‘,’分隔的一列列数据构成的。CSV格式是电子表格和数据库最常用的导入和导出格式。 CSV模块实现了以CSV格式读取和写入表格数据,它允许程序员以Excel首选格式写入数据,或者从Excel生成的文件中读取数据。
烤粽子
2021/07/07
2.7K0
Python学习:读取csv文件

相似问题

在Java中读取csv

20

在python中读取可变列多头csv文件

21

在Java中读取CSV文件

21

在Java / Jython中读取CSV

23

在java中读取大型CSV

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文