I’m new to the forum and also a newbie to OpenCV. As a development system I almost exclusively use Embarcadero Delphi 10.3.3 (sometimes C++ Builder). So far I have already successfully integrated several external C libraries into Delphi. As I heard, OpenCV is now developed in C ++. Unfortunately I 'm not aware of any possibility to use C ++ classes in Delphi. On Github there is a Delphi wrapper for OpenCV, but unfortunately only for version 2. Does anyone know a possibility to use current versions of openCV with Delphi or are thereefforts on the part of the developers of openCV to publish C interfaces again?
C interfaces will not come back. they were removed deliberately.
if you need something with a C interface, look into OpenVX.
or consider writing a wrapper. the python bindings are a wrapper (automatically generated… but from custom code) that primarily translates between cv::Mat and numpy matrices. it’s basically C++ code that uses OpenCV and presents C functions that extend python. I’m sure you could do something similar.
I can’t believe that Delphi wouldn’t have gained some way of interfacing with C++ libraries… what is this?
this looks like you’ll have to use C++ Builder to build OpenCV, because you’d need C++ Builder for this type of compatibility.
thx for your fast reply
the Embarcadero blog “Mixing Delphi and C++” refers to the fact that it is possible
to include C ++ Builder source code files in delphi projects but no compiled .obj files
the Packt article (i have the whole book btw) describes the creation of a wrapper
I’ve already tried to compile the openCV sources in c ++ builder many times, unfortunately without success
I suspect that the C# folks face similar problems although they can probably just use the MSVC-built binaries. I haven’t seen a C# “wrapper” that is a straight exposition of OpenCV’s C++. they all come up with their own classes. perhaps that’s due to them being born in the C era of OpenCV and generally little progress/support.
apparently cmake can now target C++ Builder so that should make things easier.
some of the arguments (“intel-donated libraries”) in this thread also apply to GCC/MinGW, but OpenCV builds fine with those
in the same thread I do see someone claim that he got OpenCV v3.x working with some patches so that’s a start
I generated the builds in CMake a few times with “Ninja” settings and so far it works quite well.
But when I then run ninja after a short time I get error messages during compilation.
Here’s the console text:
[1/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jfdctint.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jfdctint.c:
[2/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jfdctfst.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jfdctfst.c:
[3/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jidctflt.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jidctflt.c:
[4/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jquant1.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jquant1.c:
[5/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jidctfst.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jidctfst.c:
[6/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jidctred.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jidctred.c:
[7/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jutils.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jutils.c:
[8/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jmemnobs.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jmemnobs.c:
[9/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jquant2.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jquant2.c:
[10/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jmemmgr.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jmemmgr.c:
[11/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jcarith.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jcarith.c:
[12/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jidctint.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jidctint.c:
[13/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jaricom.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jaricom.c:
[14/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jdarith.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jdarith.c:
[15/1557] Building C object 3rdparty\libjpeg-turbo\CMakeFiles\libjpeg-turbo.dir\src\jsimd_none.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src\jsimd_none.c:
[16/1557] Building C object 3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_codec.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_codec.c:
[17/1557] Building C object 3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_aux.c.obj
FAILED: 3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_aux.c.obj
C:\PROGRA~2\EMBARC~1\Studio\20.0\bin\bcc64.exe -D_WIN32_WINNT=0x0601 -I3rdparty\zlib -IC:\DelphiComps\openCV\4.5.2_B\source\3rdparty\zlib -I3rdparty\libtiff -IC:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff -I3rdparty\libjpeg-turbo -IC:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src -isystem “C:\Program Files (x86)\Embarcadero\Studio\20.0\include\windows\crtl” -isystem “C:\Program Files (x86)\Embarcadero\Studio\20.0\include\windows\sdk” -isystem “C:\Program Files (x86)\Embarcadero\Studio\20.0\include\windows\rtl” -isystem “C:\Program Files (x86)\Embarcadero\Studio\20.0\include\dinkumware64” -isystem . -tM -fsigned-char -O0 -g -o3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_aux.c.obj -c C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_aux.c
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_aux.c:
In file included from C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_aux.c:32:
In file included from C:\Program Files (x86)\Embarcadero\Studio\20.0\include\windows\crtl\math.h:723:
In file included from C:\Program Files (x86)\Embarcadero\Studio\20.0\include\dinkumware64\ymath.h:4:
In file included from C:\Program Files (x86)\Embarcadero\Studio\20.0\include\dinkumware64\yvals.h:10:
C:\Program Files (x86)\Embarcadero\Studio\20.0\include\dinkumware64\xkeycheck.h:44:5: error: keyword defined before including C standard header #error keyword defined before including C standard header
^
1 error generated.
[18/1557] Building C object 3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_dirinfo.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_dirinfo.c:
[19/1557] Building C object 3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_color.c.obj
FAILED: 3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_color.c.obj
C:\PROGRA~2\EMBARC~1\Studio\20.0\bin\bcc64.exe -D_WIN32_WINNT=0x0601 -I3rdparty\zlib -IC:\DelphiComps\openCV\4.5.2_B\source\3rdparty\zlib -I3rdparty\libtiff -IC:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff -I3rdparty\libjpeg-turbo -IC:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libjpeg-turbo\src -isystem “C:\Program Files (x86)\Embarcadero\Studio\20.0\include\windows\crtl” -isystem “C:\Program Files (x86)\Embarcadero\Studio\20.0\include\windows\sdk” -isystem “C:\Program Files (x86)\Embarcadero\Studio\20.0\include\windows\rtl” -isystem “C:\Program Files (x86)\Embarcadero\Studio\20.0\include\dinkumware64” -isystem . -tM -fsigned-char -O0 -g -o3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_color.c.obj -c C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_color.c
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_color.c:
In file included from C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_color.c:38:
In file included from C:\Program Files (x86)\Embarcadero\Studio\20.0\include\windows\crtl\math.h:723:
In file included from C:\Program Files (x86)\Embarcadero\Studio\20.0\include\dinkumware64\ymath.h:4:
In file included from C:\Program Files (x86)\Embarcadero\Studio\20.0\include\dinkumware64\yvals.h:10:
C:\Program Files (x86)\Embarcadero\Studio\20.0\include\dinkumware64\xkeycheck.h:44:5: error: keyword defined before including C standard header #error keyword defined before including C standard header
^
1 error generated.
[20/1557] Building C object 3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_compress.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_compress.c:
[21/1557] Building C object 3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_close.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_close.c:
[22/1557] Building C object 3rdparty\libtiff\CMakeFiles\libtiff.dir\tif_dir.c.obj
Embarcadero C++ 7.40 for Win64 Copyright (c) 2012-2018 Embarcadero Technologies, Inc.
C:\DelphiComps\openCV\4.5.2_B\source\3rdparty\libtiff\tif_dir.c:
ninja: build stopped: subcommand failed.
that you can’t access C ++ classes with Delphi is clear, it’s the same the other way round, it doesn’t work if you don’t provide access to Delphi classes in a C wrapper. With a C ++ compiler according to the ISO standard it should look different, or what else does this standard exist for?
it’s not true, that there is absolutely no support for Pascal
this is the NEW openCV for Pascal (Classes)
You should expect more from a moderator, especially if you say something so full-bodied that is not true
I seem to be in the wrong forum here if the only answer I get is “don’t insist on using opencv from pascal”
But that may be due to the ignorance of some of those involved
Have a nice day