【转载】opencv中的一些宏

OpenCV异常处理机制 很多函数,都会对参数的有效性进行判断,不符合要求,直接弹对话框,然后程序崩溃,逼得你不得不正确调用他。这个属于编程的逻辑错误,就像assert一样,用于排除编码错误,这和业务错误处理的层次是不同的。        一般,我们仿照这种模式,如下int TestCvError( IplImage *pImgGray, int iNum) { CV_FUNCNAME( "TestCvError" ); __BEGIN__; if (iNum depth != 阅读详情

opencv中的一些宏

 

原文地址:http://blog.youkuaiyun.com/wqvbjhc/archive/2010/04/17/5496632.aspx

 

CV_FUNCNAME 定义变量 cvFuncName存放函数名,用于出错时可以报告出错的函数

__FILE__  C语言中的宏,CV_Error中经常用到,说明出错的函数所在源文件名

__LINE__  C语言中的宏,CV_Error中经常用到, 说明出错位置的函数

cxerror.h 中

view plaincopy to clipboardprint?
 /* CV_FUNCNAME macro defines icvFuncName constant which is used by CV_ERROR macro */ 
#ifdef CV_NO_FUNC_NAMES  
    #define CV_FUNCNAME( Name )  
    #define cvFuncName ""  
#else     
    #define CV_FUNCNAME( Name )  /  
    static char cvFuncName[] = Name  
#endif  
/* 
  CV_ERROR macro unconditionally raises error with passed code and message. 
  After raising error, control will be transferred to the exit label. 
*/ 
#define CV_ERROR( Code, Msg )                                       /  
{                                                                   /  
     cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ );        /  
     EXIT;                                                          /  
} 
 /* CV_FUNCNAME macro defines icvFuncName constant which is used by CV_ERROR macro */
#ifdef CV_NO_FUNC_NAMES
    #define CV_FUNCNAME( Name )
    #define cvFuncName ""
#else  
    #define CV_FUNCNAME( Name )  /
    static char cvFuncName[] = Name
#endif
/*
  CV_ERROR macro unconditionally raises error with passed code and message.
  After raising error, control will be transferred to the exit label.
*/
#define CV_ERROR( Code, Msg )                                       /
{                                                                   /
     cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ );        /
     EXIT;                                                          /
}
 

2.

__BEGIN__ 和__END__配套使用,当出现error时,EXIT

cxerror.h 中

#define __BEGIN__       {
#define __END__         goto exit; exit: ; }
#define __CLEANUP__
#define EXIT            goto exit

对于代码中 __BEGIN__ 和__END__后面多加一个分号 的解释:

因为 __BEGIN__;等价于{; ,其中分号(;)为一个空语句,是合理的,但不要也行.__END__也一样.如

view plaincopy to clipboardprint?
int i;  
;  
;  
int b; 
int i;
;
;
int b;

这样的语法是正确的.


3.

CV_CN_MAX 64//通道数最大为64

CV_DEPTH_MAX = 8 = (1000)//位深最大为8

CV_MAT_TYPE_MASK 11111111 //511

CV_MAT_TYPE(flags)  ((flags) & CV_MAT_DEPTH_MASK)//flags与511相与还是flags,但可以保重flags在0到511之间

CV_MAT_DEPTH_MASK = 7 = (0111)//位深掩模,保证最大为8(其余数)

CV_MAT_CN_MASK = (111111, 000)//掩模

CV_MAT_CN求得通道数

CV_MAT_DEPTH求得深度,共8中 0 ~ 7

CV_ELEM_SIZE = 通道数 x DEPTH占字节数 = 通道数 >> X = 一个像素字节数

CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))//将cn-1左移3位(即乘以8)后与depth相加


cxtypes.h中

view plaincopy to clipboardprint?
/* 0x3a50 = 11 10 10 01 01 00 00 ~ array of log2(sizeof(arr_type_elem)) */ 
#define CV_ELEM_SIZE(type) /  
    (CV_MAT_CN(type) << ((((sizeof(size_t)/4+1)*16384|0x3a50) >> CV_MAT_DEPTH(type)*2) & 3))  
#define CV_CN_MAX     64  
#define CV_MAT_CN_MASK          ((CV_CN_MAX - 1) << CV_CN_SHIFT)  
#define CV_MAT_CN(flags)        ((((flags) & CV_MAT_CN_MASK) >> CV_CN_SHIFT) + 1)  
#define CV_MAT_DEPTH(flags)     ((flags) & CV_MAT_DEPTH_MASK)  
#define CV_MAT_DEPTH_MASK       (CV_DEPTH_MAX - 1)  
#define CV_CN_SHIFT   3  
#define CV_DEPTH_MAX  (1 << CV_CN_SHIFT) 

 

vs2008安装配置opencv【转载】 来源:http://blog.youkuaiyun.com/zhangyouzhuo/archive/2010/12/04/6054106.aspxhttp://ailiuzhumei.blog.163.com/blog/static/1110909201091304835938/安装所需要的软件安装VC++ 2008安装OpenCV(从 http://www.opencv.org.cn/index.php/Download 下载OpenCV 2.0,并安装,本文档假定安装目录为:D:/Program Files/Op 阅读详情

相关推荐

背景剪除和OpenCV中的实现

转载请注明出处!!!http://blog.youkuaiyun.com/zhonghuan1992 背景剪除和OpenCV中的实现          背景与前景都是相对的概念,以高速公路为例:有时我们对高速公路上来来往往的汽车感兴趣,这时汽车是前景,而路面以及周围的环境是背景;有时我们仅仅对闯入高速公路的行人感兴趣,这时闯入者是前景,而包括汽车之类的其他东西又成了背景。背景剪除是使用非常广泛的摄像头视频

ZH de 部落格 9621

Opencv的异常处理方式

如果调用函数出现错误并不直接返回错误代码,用CV_ERROR宏调用cvError函数,然后在cvError中调用error函数来报告错误信息. 在进入error函数之前,新建一个错误异常类,来保存当前的错误信息,然后利用这个异常类作为error函数的接口. 在error函数内,首先检测是否存在自定义的错误处理器,若存在则进入自定义的错误处器处理错误,否则,报告错误信息,并抛出错误异常.

xuelangwin的博客 8151

【Opencv】通过CMake编译Opencv,开启ippicv、tbb、ffmpeg功能

转载标明出处即可~下载的编译好的Opencv代码一般不开启如题的功能。而Ipp tbb可以用来优化性能,ffmpeg方便视频采集等。所以有必要重新编译一版附带上面功能的Opencv库。下载地址CMakehttps://cmake.org/download/tbbhttps://www.threadingbuildingblocks.org/downloadOpencv下载地址:http://open

Cooli7wa的博客 1万+

OpenCV系列一 --- OpenCV简介

OpenCV(开源计算机视觉库:http://opencv.org)是一个开源的BSD许可库,包含数百种计算机视觉算法。该文档描述了OpenCV 2.x 的API,它本质上是一个C++ API,而不是基于C的OpenCV 1.x API(自从OpenCV 2.4发布以来,C API已被弃用,未经过“C”编译器测试)。 OpenCV具有模块化结构,这意味着该包包含多个共享库或静态库。可以使用以下模块...

平凡 6746

AI Agent开发实战:100个真实场景题库解析

AI Agent开发涉及复杂的需求理解、架构设计及安全防护等关键技术环节。在工程实践中,开发者常面临需求偏差、系统崩溃等挑战,特别是在金融、医疗等高要求场景下。通过真实案例题库,开发者能系统性地掌握需求分析、架构决策树建模(如向量数据库选型)、安全攻防策略(如提示词注入防御)等核心技能。这些实战经验不仅能提升Agent的可用性和安全性,还能优化其在电商客服、智能家居等场景中的表现。题库采用动态难度系统,覆盖从基础到高级的开发挑战,是AI工程化落地的重要参考。

weixin_29057695的博客 342

智能手环心率检测不准?用STM32+MAX30102教你实现医疗级精度(含算法优化)

本文详细解析了如何利用STM32微控制器和MAX30102光学传感器实现医疗级精度的心率检测方案。通过硬件参数调校、ADC采集优化、运动伪影消除及深度学习算法改进,显著提升智能手环在静态和运动状态下的检测精度,误差可控制在±1.5bpm以内,满足医疗电子标准。

weixin_28335283的博客 524

理解OpenCV中的宏定义 CVAPI(函数返回类型)(转载)

读代码时看到语句 CVAPI(IplImage*) cvCreateImage( CvSize size, int depth, int channels ); 遂想了解下这个CVAPI到底是怎么回事! #define CVAPI(rettype) CV_EXTERN_C CV_EXPORTS rettype CV_CDECL

爱拼才会赢 1390

别再纠结高边低边了!用TI BQ76952设计两轮车BMS,手把手教你选对架构(附电路图)

本文深度解析基于TI BQ76952芯片的电动两轮车BMS设计策略,涵盖高边/低边驱动选择、四种基础架构的电流路径分析及选型决策矩阵。通过实战案例分享,帮助工程师优化BMS架构,提升系统可靠性和成本效益,特别适合电摩和共享单车应用场景。

weixin_42665255的博客 513

OpenCV辅助函数(utility functions)

OpenCV提供了一系列帮助函数,用来帮助开发人员能够快速进行开发,下面来逐一分析其帮助函数 cv::alignPtr() 该函数主要是将给定的指针按照给定的自己来对齐,API形式如下: template<typename _Tp> static inline _Tp* alignPtr(_Tp* ptr, int n=(int)sizeof(_Tp)) 其中ptr为传递的原...

weixin_42730667的博客 2322

Unity通用Buff系统,Buff编辑器(1,理论篇)(技能系统之Buff篇)

逻辑层根据游戏的规则和设计,控制Buff的生命周期、影响目标对象的属性或行为,以及处理Buff的交互和冲突。Buff堆叠和冲突:有些游戏中允许同类型的Buff叠加,以增加效果的强度,而有些游戏中可能不允许Buff叠加,只能由更强力的Buff来覆盖较弱的Buff。灵活个性化:每个游戏对象拥有自己的BuffManager,可以实现个体对象的独特Buff效果,增加游戏的多样性和个性化。自由控制:每个对象独立管理自己的Buff,可以自由地激活、更新和移除Buff效果,提供更精细的控制和逻辑实现。

u010082265的博客 4692

034、特定场景优化(一):小目标检测的改进策略合集

本文针对工业场景中的小目标检测难题,提出了一套实战优化方案。首先从数据层面建议保持高分辨率输入(1024-1280像素)或采用切块训练策略,并适当放大标注区域。在网络结构上,提出减少下采样次数、增加高分辨率检测头、引入空间注意力机制等改进。损失函数方面推荐使用NWD匹配和QFL损失提升小目标敏感度。部署环节强调NMS优化、分辨率对齐和量化处理技巧。最后总结核心经验:优先优化数据质量而非模型结构,标注一致性比算法更重要,同时需为实际部署预留性能余量。硬件升级有时比算法调优更经济有效。

xiaoyaohou11的博客 650

OpenCV中的assert函数

[转载]OpenCV中的assert函数  (2012-10-14 16:13:15) 转载▼ 标签:  转载   原文地址:OpenCV中的assert函数作者:小舞 ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如

jenny_84的专栏 1376

从零开始学习信号完整性(SIPI)--1 简介

信号完整性就是研究如何让驱动芯片发出的信号经过传输通道被接收芯片正确接收的学问。 信号完整性包含了三个要素: 信号:是被传输的主体,我们首先要了解、熟悉信号的特性。 芯片:分为驱动芯片和接收芯片,信号完整性工程师就是要实现信号在驱动芯片和接收芯片之间的正确传输。 传输通道:是传输信号的介质,是信号所走的“路”。如何实现信号的正确传输呢?那就要信号完整性工程师为信号“修路”、“搭桥”。

qq_29476769的博客 4万+

opencv宏

1. CV_FUNCNAME 定义变量 cvFuncName存放函数名,用于出错时可以报告出错的函数 __FILE__ C语言中的宏,CV_Error中经常用到,说明出错的函数所在源文件名 __LINE__ C语言中的宏,CV_Error中经常用到, 说明出错位置的函数 cxerror.h 中 /* CV_FUNCNA...

weixin_30856725的博客 132

倍福TwinCAT3 OPC UA配置全流程:从安装到无密码访问(附常见问题解决)

本文提供了倍福TwinCAT3 OPC UA配置的完整实战指南,重点讲解如何实现无密码游客访问。从软件安装、授权配置、服务器初始化到深度排错,详细解析了配置流程中的关键步骤与常见陷阱,帮助工程师高效打通PLC与上位系统的数据通讯通道。

vulkan6gpu的博客 471

读懂 403 Forbidden, the request has been blocked by UCON.:它不是浏览器渲染问题,而是后端安全闸门在拦截

摘要 403 Forbidden 错误表明服务器理解请求但拒绝执行,通常与权限或访问控制有关。当错误信息显示 "blocked by UCON" 时,说明请求被 SAP 体系中的统一连接管控框架拦截。UCON 采用白名单机制限制外部调用,通过记录、评估、强制三阶段流程实施管控。常见触发场景包括 HTTP 服务与通信场景配置不一致、白名单未更新等。排查时应通过 DevTools 确认服务器响应,使用 curl 排除浏览器干扰,并比较不同环境的行为差异。解决方案通常涉及调整配置传输顺序或更新

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 239

OpenCV2代码升级到OpenCV3/4时报错的一些策略

把OpenCV2的代码移植到OpenCV3或OpenCV4

weixin_41816889的博客 2407

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OpenCV中的inRange()

【1】inRange()函数 OpenCV中的inRange()函数可实现二值化功能(这点类似threshold()函数),更关键的是可以同时针对多通道进行操作,使用起来非常方便!主要是将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0),该功能类似于之间所讲的双阈值化操作。 函数原型(C++): void inRange(InputArr...

Arcobaleno 3万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

(转载) openCV中IplImage的使用

<br />openCV中IplImage的使用开始做人脸检测的移植工作了,前段时间完成了opencv的1.0版的源代码包在montavista的工具链下的编译,经过交叉编译成功的将facedetect例程在DM6446的ARM上跑通了。但这个程序里的IplImage是通过cvLoadImage一jpg图片得到的,而我的程序里是利用v4l2驱动从摄像头读到的UYVY格式的数据,因此想自己来创建这个IplImage的结构体。IplImage是openCV库中很重要的一个结构体,库中的图像都是保存为这个结构体后

banditzhi的专栏 2441

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

opencv关于Mat类中的Scalar()---颜色赋值

这个 CvScalar就是一个可以用来存放4个double数值的数组(O'Reilly的书上写的是4个整型成员);一般用来存放像素值(不一定是灰度值哦)的,最多可以存放4个通道的。 typedef struct CvScalar {   double val[4];   }CvScalar; 1. inline CvScalar cvScalar( d...

a7691176的博客 2686

【OpenCV入门教程之二】 一览众山小:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析

写作当前博文时配套使用OpenCV版本:2.4.8 之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后,再重点学习自己感兴趣的部分的话,就会有一览众山小的感觉,于是,就决定写出这篇文章,作为启程OpenCV系列博文的第二篇。 至于OpenCV组件结构的研究方法,我们不妨管中窥豹,通过opencv安装路径下include目录里面头文件的分类存放,来一窥OpenCV这些年迅猛发展起来的庞杂组件架构。 我们进入到D:\ProgramFiles\opencv\build\

【浅墨的游戏编程Blog】毛星云(浅墨)的专栏 17万+

【转载】OpenCV函数汇总

opencv用法

小小能的博客 2812

vs中的$()宏

在学习C语言的时候,我们曾经遇到过一个宏的概念。宏的作用机理本质上是宏的展开,C语言中的宏的用法也有很多种(水其实很深…),不过从感觉上来讲,人们大致上会在以下的场景中,利用宏来解决一些窘境:一是为了避免重复书写同样性质代码时,会使用到宏;二是为了定义一些常量参数时,会使用到宏。另外,宏的意义也在于,当我们修改某个宏的定义时,便修改了所有引...

Wu_qz的博客 1980

转载,opencv4 缺少ffmpeg gstreamer

用opencv把图片合并成视频,代码遍地都是 // jpg2video.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; int main() { /...

panda0熊猫的博客 4213

(转载)opencv+GPU

OpenCV的GPU模块只支持NVIDIA的显卡,原因是该部分是基于NVIDIA的CUDA和NVIDIA的NPP模块实现的。而该模块的好处在于使用GPU模块无需安装CUDA工具,也无需学习GPU编程,因为不需要编写GPU相关的代码。但如果你想重新编译OpenCV的GPU模块的话,还是需要CUDA的toolkit。 由于GPU模块的发展,使大部分函数使用起来和之前在CPU下开发非常类似。首先,就是

小米mm修仙路 1630

OpenCV入门知识[转载]

国外的介绍opencv入门知识的油管视频链接如下: https://pythonprogramming.net/loading-video-python-opencv-tutorial/ 根据以上视频,有csdn道友翻译出来的中文版说明可参考如下链接:(本文为转载,侵删) https://blog.youkuaiyun.com/qq_38660394/article/details/8076201...

blog 1716
上一篇: c/c++一些容易遗忘的知识点(不断补充)
下一篇: opencv中窗口置顶的方法
sing_sing
博客等级 码龄20年 209粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值