博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CImage与OpenCV兼容问题
阅读量:4302 次
发布时间:2019-05-27

本文共 1119 字,大约阅读时间需要 3 分钟。

 

http://hi.baidu.com/gildor/item/fca3243bf3133549033edc91

CImage与OpenCV兼容问题

CImage类和OpenCV中的某个类冲突,在配置了OpenCV后,如果创建CImage类,会有如下问题:

error C2872: 'CvvImage' : ambiguous symbol
        could be 'c:\program files\opencv\otherlibs\highgui\highgui.h(438) : CvvImage'
        or 'd:\program files\visual studio 8\vc\atlmfc\include\atlimage.h(68): ATL::CvvImage'
可以考虑修改OpenCV的代码,去掉其中对于CImage的定义。
打开\OpenCV\_make\opencv.sln工程
在OpenCV中,只有两处用到了CImage的定义,
一个是highgui.h line 438; 直接把#define注释掉。
另外一处是image.cpp,line 236 void CImage::DrawToHDC。
改为void CvvImage::
然后重新编译,把掉用opencv CImage的地方改为CvvImage就可以了。有可能有个别工程编不通,如果不是由于修改引起的就没有问题。
2.直接在 OpenCV头文件后
#undef CImage #include <atlimage.h>
opencv 2.0以后的版本

使用OpenCV   highgui.h中定义的CvvImage类可以很好的实现OpenCV和Windows MFC显示接口。由于CvvImage实在highgui.h头文件中声明的,因此如果程序中需要使用,则必须在开头包含头文件

[cpp] 

  1. #include <highgui.h>  

CvvImage对应CImage宏:

[cpp] 

  1. #define CImage CvvImage   

 

注意事项:

1.由于CImage太常见, 很容易造成冲突,因此建议不要使用该宏(可以直接删去此宏定义)。

2.参数中含有HDC(注:一种windows系统下定义的变量类型,用来描述设备描述表的句柄类型)类型的并不能保证移植到其他平台,例如Show/DrawToHDC等。 

       OpenCV 2.2.0版本中,CvvImage类不见了...为了能够继续使用这个类,下面把这个类的源代码贴出来,使用的时候将该代码加入到工程中便可以使用了。为了方便切换OpenCV的版本,这里用到了一些条件编译宏,来保证代码的灵活性。

代码见:

转载地址:http://xcmws.baihongyu.com/

你可能感兴趣的文章
【JavaSE】day11_Reader和Writer_PrintWriter_BufferedReader
查看>>
【Java】第一次月考错题及分析
查看>>
【JavaSE】day12_异常(Exception)
查看>>
【JavaSE】day13_多线程
查看>>
Mysql之DDL语句_create_alter
查看>>
Mysql之DML语句_insert_uodate_delete
查看>>
Linux常用帮助命令man,help,info
查看>>
【JavaSE】day14_线程安全_synchroized关键字
查看>>
【JavaSE】day14_XML
查看>>
【JavaSE】day15_TCP之聊天室
查看>>
【JavaSE】day16_UDP
查看>>
Oracle中varchar,varchar2,nvarchar,nvarchar2的区别
查看>>
【Oracle】day01_数据类型_DDL语句_DML语句
查看>>
【Orace】day02_字符串_数值_日期_NULL相关函数
查看>>
【Oracle】day03_查询语句_聚合函数_关联查询
查看>>
【Oracle】day04_子查询_分页查询_DECODE_排序_集合操作_高级分组
查看>>
【Oracle】day05_视图_序列_索引_约束
查看>>
【JDBC】day01_Java连接Oracle数据库过程及常用方法
查看>>
【JDBC】day02_PreparedStatement_元数据
查看>>
【JDBC】day03_数据库连接池
查看>>