OpenCV 3.2 在 C++Builder 10.1 Berlin 下的安装使用

kingkee 2017-07-10 10:16:30
想借用C++Builder 界面设计的便捷性,结合 OpenCV 3.2来使用,但查了好多资料,还是没能成功。
已经试过的方法:
1、用一些工具转换 OpenCV的库在C++Builder下使用,转投完成后,还是不能使用。
2、使用 C++Builder 编译器重新编译 OpenCV 源码,各种错误,没成功。

向各位大神求教了。
...全文
967 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2017-07-13
  • 打赏
  • 举报
回复
引用 26 楼 DelphiGuy 的回复:
BITMAPINFO是自己填充的,根据图像的数据结构,宽度、高度、色深、通道数、图像数据指针等等自己构造,虽然我没有验证,不过估计opencv图像的内存数据结构肯定考虑了和windows bitmap的兼容,后者1、4、8、15/16、24、32位格式都有,基本不存在构造不出来的类型。
也是,图像数据部分,R、G、B还是B、G、R顺序一般都是一致的吧?每像素行图像数据末尾不知道有没有对齐填充,cv结构和BITMAPINFO转换不知道会不会有影响?
  • 打赏
  • 举报
回复
BITMAPINFO是自己填充的,根据图像的数据结构,宽度、高度、色深、通道数、图像数据指针等等自己构造,虽然我没有验证,不过估计opencv图像的内存数据结构肯定考虑了和windows bitmap的兼容,后者1、4、8、15/16、24、32位格式都有,基本不存在构造不出来的类型。
ooolinux 2017-07-13
  • 打赏
  • 举报
回复
引用 24 楼 DelphiGuy 的回复:
我对于opencv也是新手,初步研究,cvLoadImage返回的指针指向图像的数据结构,宽度、高度、色深、通道数、图像数据指针等等,应该可以用StretchDIBits复制出来。
我也没用过OpenCV,好奇怎么把它和Delphi或CB结合起来。 我百度了一下StretchDIBits,需要BITMAPINFO结构,跟cv图像数据结构可能不一定兼容, 不过我想根据色深和图像数据,应该可以得到像素的RGB分量值(如果不是24位不知道怎么办?),转换为TColor赋值给TBitmap的Canvas->Pixels[x][y]。ScanLine应该也可以。
  • 打赏
  • 举报
回复
我对于opencv也是新手,初步研究,cvLoadImage返回的指针指向图像的数据结构,宽度、高度、色深、通道数、图像数据指针等等,应该可以用StretchDIBits复制出来。
kingkee 2017-07-12
  • 打赏
  • 举报
回复
感谢各位! 在 embarcadero 官方网站上看到了产品开发线路图,官方计划在 RAD Studio 10.2 tokyo updat2 支持 CMake,最快今年底吧,到时就方便了。
ooolinux 2017-07-12
  • 打赏
  • 举报
回复
引用 22 楼 DelphiGuy 的回复:
opencv的源码里带了cmake的make文件,但是提供的windows版二进制下载里面的DLLs是用VC++编译的。
如果是标准C++的话,以后用CB编译一般没问题了? OpenCV可以自己创建窗口显示图像,怎么把它运算得到的图像用TImage显示呢?
  • 打赏
  • 举报
回复
opencv的源码里带了cmake的make文件,但是提供的windows版二进制下载里面的DLLs是用VC++编译的。
ooolinux 2017-07-12
  • 打赏
  • 举报
回复
引用 20 楼 kingkee 的回复:
感谢各位! 在 embarcadero 官方网站上看到了产品开发线路图,官方计划在 RAD Studio 10.2 tokyo updat2 支持 CMake,最快今年底吧,到时就方便了。
OpenCV 源码工程文件是什么类型的?意思CMake可以直接编译了?
  • 打赏
  • 举报
回复
不需要.lib,直接声明DLL中的符号就可以。
ooolinux 2017-07-11
  • 打赏
  • 举报
回复
引用 17 楼 DelphiGuy 的回复:
[quote=引用 15 楼 u010165006 的回复:] C++直接使用DLL中函数的话应该是要把动态(导入)lib加入工程一起编译,Delphi不要导入lib怎么定位DLL中函数地址?
C++中动态连接也需要.lib属于多余,这个lib里面没有实质内容,只是指出哪个符号来自哪个DLL,和Delphi中直接声明 function xxx: type; external 'xxx.dll';是一回事,除了更麻烦之外。 [/quote] Delphi对传统C/C++那一套还是有变通的。
  • 打赏
  • 举报
回复
引用 12 楼 wangfp40 的回复:
[quote=引用 11 楼 DelphiGuy 的回复:] 不需要.lib,直接声明DLL中的符号就可以。
大神,来个完整例子呗。。。也想了解OPENCV[/quote] https://sourceforge.net/projects/delphiopencv/
  • 打赏
  • 举报
回复
引用 15 楼 u010165006 的回复:
C++直接使用DLL中函数的话应该是要把动态(导入)lib加入工程一起编译,Delphi不要导入lib怎么定位DLL中函数地址?
C++中动态连接也需要.lib属于多余,这个lib里面没有实质内容,只是指出哪个符号来自哪个DLL,和Delphi中直接声明 function xxx: type; external 'xxx.dll';是一回事,除了更麻烦之外。
ooolinux 2017-07-11
  • 打赏
  • 举报
回复
csdn回帖编辑器总是自动把以前引用的也加进来。
ooolinux 2017-07-11
  • 打赏
  • 举报
回复
引用 11 楼 DelphiGuy 的回复:
不需要.lib,直接声明DLL中的符号就可以。
相当于用LoadLibrary和GetProcAddress函数吗?感觉这样麻烦点。
引用 14 楼 DelphiGuy 的回复:
[quote=引用 13 楼 u010165006 的回复:] [quote=引用 11 楼 DelphiGuy 的回复:] 不需要.lib,直接声明DLL中的符号就可以。
相当于用LoadLibrary和GetProcAddress函数吗?感觉这样麻烦点。[/quote] 不是的,声明一个接口单元(相当于头文件)就可以直接使用。 [/quote] C++直接使用DLL中函数的话应该是要把动态(导入)lib加入工程一起编译,Delphi不要导入lib怎么定位DLL中函数地址?
  • 打赏
  • 举报
回复
引用 13 楼 u010165006 的回复:
[quote=引用 11 楼 DelphiGuy 的回复:] 不需要.lib,直接声明DLL中的符号就可以。
相当于用LoadLibrary和GetProcAddress函数吗?感觉这样麻烦点。[/quote] 不是的,声明一个接口单元(相当于头文件)就可以直接使用。
ooolinux 2017-07-11
  • 打赏
  • 举报
回复
引用 11 楼 DelphiGuy 的回复:
不需要.lib,直接声明DLL中的符号就可以。
相当于用LoadLibrary和GetProcAddress函数吗?感觉这样麻烦点。
风子啊啊 2017-07-11
  • 打赏
  • 举报
回复
引用 11 楼 DelphiGuy 的回复:
不需要.lib,直接声明DLL中的符号就可以。
大神,来个完整例子呗。。。也想了解OPENCV
ooolinux 2017-07-10
  • 打赏
  • 举报
回复
据说新版本CB,CV库不用转换了,好像DelphiGuy说的。
ooolinux 2017-07-10
  • 打赏
  • 举报
回复
引用 9 楼 DelphiGuy 的回复:
直接用源码肯定是不行的,使用DLLs可以,需要翻译一下头文件,SF上有一个2.4版的Delphi转换。
Delphi使用它的DLL需要动态lib吗,需要转换吗?
  • 打赏
  • 举报
回复
直接用源码肯定是不行的,使用DLLs可以,需要翻译一下头文件,SF上有一个2.4版的Delphi转换。
加载更多回复(7)
VC6下安装与配置 Wikipedia,自由的百科全书 本手册适应 OpenCV 1.0 安装。 目录 [隐藏] 1 安装Visual C++ 6.0 2 安装OpenCV 3 配置Windows环境变量 4 配置Visual C++ 6.0 4.1 全局设置 4.2 项目设置 [编辑]安装Visual C++ 6.0 略。 [编辑]安装OpenCV 从http://www.opencv.org.cn/ 下载OpenCV安装程序。假如要将OpenCV安装到C:\\Program Files\\OpenCV。(下面附图为OpenCV 1.0rc1的安装界面,OpenCV 1.0安装界面与此基本一致。)在安装时选择\"将\\OpenCV\\bin加入系统变量\"(Add\\OpenCV\\bin to the systerm PATH)。 [编辑]配置Windows环境变量 检查C:\\Program Files\\OpenCV\\bin是否已经被加入到环境变量PATH,如果没有,请加入。 [编辑]配置Visual C++ 6.0 [编辑]全局设置 菜单Tools->Options->Directories:先设置lib路径,选择Library files,在下方填入路径: C:\\Program Files\\OpenCV\\lib 然后选择include files,在下方填入路径: C:\\Program Files\\OpenCV\\cxcore\\include C:\\Program Files\\OpenCV\\cv\\include C:\\Program Files\\OpenCV\\cvaux\\include C:\\Program Files\\OpenCV\\ml\\include C:\\Program Files\\OpenCV\\otherlibs\\highgui C:\\Program Files\\OpenCV\\otherlibs\\cvcam\\include [编辑]项目设置 每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上 cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib 如果你不需要这么多lib,你可以只添加你需要的lib。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧