整理日: 20154/6

Borland C++BuilderでOpenCVを使う

確認 Turbo C++ 2007/03

1. ダウンロード&インストール

http://sourceforge.net/projects/opencvlibrary/

から、opencv-win (OpenCV_1.0.exe) をダウンロード&インストールして下さい。

→C:\Program Filesへインストールされます。

2. ライブラリのビルド

C++Builderの場合そのまま.libが使えません。

アクセサリ>コマンドプロンプトを開き、

cd C:\Program Files\OpenCV_make

を実行して下さい。

→プロンプトが”C:\Program Files\OpenCV_make>”となります。

コマンドプロンプトで

make -f make_all_bc.mak

を実行して下さい。

→コンパイルが始まります。

→OpenCv/bin/のDLLが更新されます。

→OpenCV/lib/のLIBが更新されます。

(ここでやろうとしていること)

C:\Program Files\OpenCV_make フォルダにある makefileと、オプションとして make_all_bc.mak を実行しようとしています。 多分”bc”がボーランドコンパイラで、”gnu”がGNU、 ”ms”マイクロソフトなどと思います。

3. C++Builderの設定

OpenCv/bin/から、cv100dll、cxcore100.dll、highgui100.dll、の3つを、 出来上がるEXEと同じフォルダにコピーします。

OpenCV/lib/から、cv.lib、cxcore.lib、highgui.lib、の3つを プロジェクトと同じ位置へコピーします。

ビルダー>プロジェクト>プロジェクトに追加で、上記3つのLIBを追加します。

ビルダー>プロジェクト>オプションのインクルードパスにて

C:\Program Files\OpenCV\cxcore\include

C:\Program Files\OpenCV\cv\include

C:\Program Files\OpenCV\otherlibs\highgui

C:\Program Files\OpenCV\otherlibs\cvcam\include

を追加します。

4. テストプログラム

#include "cv.h"
#include "highgui.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IplImage* ml;
ml = cvLoadImage( "./sample.bmp" );
}

コンパイルが通り実行できれば使用可能です。

5. memo

公式ドキュメントの引数に”CvArr”が出てきますが。

CvArr
is used only as a function parameter to specify that the function accepts arrays of more than a single type,for example IplImage, CvMat or even CvSeq. The particular array type is determined at runtime by analyzing the first 4 bytes of the header.

より引数CvArr
には、IplImage* CvMat* CvSeq* を使います。

typedef struct _IplImage
{
int nSize; /* sizeof(IplImage) */
int ID; /* version (=0)*/
int nChannels; /* チャンネル数。RGBなら3
OpenCV の関数では、主に 1~4 を使います */
int alphaChannel; /* OpenCV では使いません */
int depth; /* 1画素の持つ型
IPL_DEPTH_8U : 8 bit 自然数
IPL_DEPTH_8S : 8 bit 整数
IPL_DEPTH_16S : 16 bit 整数
IPL_DEPTH_32S : 32 bit 整数
IPL_DEPTH_32F : 32 bit 実数
IPL_DEPTH_64F : 32 bit 実数 */
char colorModel[4]; /* OpenCV では使いません */
char channelSeq[4]; /* ditto */
int dataOrder; /* 0 - RGB RGB RGB, 1 - RRR GGG BBB
OpenCV では、0 のみ使用可能 */
int origin; /* 0 - 左上が原点, 1 - 左下が原点 */
int align; /* データアライメント。
OpenCVでは参照しません。widthStep のみ参照します */
int width; /* width。横の画素数 */
int height; /* height。縦の画素数 */
struct _IplROI *roi; /* Region Of Interest。
処理対象の領域を持つポインタ。使わないなら NULL */
struct _IplImage *maskROI; /* must be NULL */
void *imageId; /* ditto */
struct _IplTileInfo *tileInfo; /* ditto */
int imageSize; /* 画素値配列のバイトサイズ
(==image->height*image->widthStep)*/
char *imageData; /* アライメントされた画素値配列へのポインタ */
int widthStep; /* アライメントした横のバイトサイズ */
int BorderMode[4]; /* OpenCV では使いません */
int BorderConst[4]; /* ditto */
char *imageDataOrigin; /* 画素値配列へのポインタ(アライメントは不要)
deallocation には必要らしいが、NULLでイイと思う*/
}IplImage; //---------------------------------------------------------------------------
//OpenCvを起動(指定フォルダから呼び出す)
#pragma comment(lib, "../opencv/highgui.lib")
#include "highgui.h"
void __fastcall TMainForm::Button2Click(TObject *Sender)
{
typedef IplImage* (*CVLOAD)(char*); HINSTANCE hCxcore = LoadLibrary("../opencv/cxcore097.dll");//これをロードしてから
HINSTANCE hHighgui = LoadLibrary("../opencv/highgui097.dll"); int width = 0;
if(hCxcore && hHighgui){
//DLLで定義されているメソッド名(ヘッダではない)
CVLOAD DllFunction = (CVLOAD)GetProcAddress(hHighgui,"_cvLoadImage");
IplImage* ml = DllFunction("./sample.bmp");
width = ml->width;
} FreeLibrary(hCxcore);
FreeLibrary(hHighgui);
}
//---------------------------------------------------------------------------

OpenCV for c++Builder的更多相关文章

  1. 基于OpenCV的人脸识别[iOS开发笔记(2)]

    开始了OpenCV的试水工作了... 1.Get ready 在OpenCV中我们会使用函数cv::CascadeClassifier 来进行人脸检测.但是在使用本函数之前我们需要添加一个XML文件对 ...

  2. Cygwin编译自己定义OpenCV库报错:opencv_contrib: LOCAL_SRC_FILES points to a missing file

    今天受命帮师弟调个OpenCV4Android 识别银行卡的程序,版本号为OpenCV4Android2.4.9,使用方式为前文介绍的第一种方式,即通过jni调用opencv.如杂家前文所述,配套的N ...

  3. 解决OpenCV JavaCameraView相机preview方向问题

    网上找了很多解决都是有问题的,研究了半天源码解决了这个问题.我是从整个相机启动和数据传输的过程着手的,这里捡重点介绍一下,最后会贴上修改后的两个源文件. 首先要知道一个概念. 图里的小圆圈是Home按 ...

  4. Opencv - Android 配置安装

    1.道具们: windows 7 64位 OpenCV-2.4.6-android-sdk-r2 ( http://sourceforge.net/projects/opencvlibrary/fil ...

  5. OpenCV Java Tutorials- Camera Calibration

    2020-10-10原文地址:https://opencv-java-tutorials.readthedocs.io/en/latest/09-camera-calibration.html#id1 ...

  6. opencv在图像显示中文

    在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母.矩形框等(opencv支持的)或者是中文汉字(借助freetype). 1.显示数字/矩形框 #include <op ...

  7. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  8. opencv源码:cascadedetect

    级联分类器检测类CascadeClassifier,提供了两个重要的方法: CascadeClassifier cascade_classifier; cascade_classifier.load( ...

  9. 基于OpenCV的车辆检测与追踪的实现

    最近老师布置了一个作业,是做一个基于视频的车辆检测与追踪,用了大概两周的时间做了一个简单的,效果不是很理想,但抑制不住想把自己的一些认识写下来,这里就把一些网络上的博客整理一下分享给大家,希望帮助到大 ...

随机推荐

  1. myeclipes使用过程中的错误解决方案

    1.‘Building workspace’ has encountered a problem. Errors occurred during the build. 解决方案:这样的错误,主要是由于 ...

  2. 使用 git 进行项目管理(只管理代码,不管理项目配置)

    使用Git进行项目管理 1. 从服务器pull项目,本地还原工程 从服务器拉取仓库及分支 git clone git@github.com/helloWorld.git git branch -a g ...

  3. 使用gradle构建java项目

    gradle是什么东东 gradle是继ant,maven之后另外一种的面向java的自动化项目构建工具,他是基于groovy语言的.相对于ant,maven,gradle显得更加简单. 安装grad ...

  4. JS实现图片宽高的等比缩放

    关于图片宽高的等比缩放,其实需求就是让图片自适应父容器的宽高,并且是等比缩放图片,使图片不变形. 例如,需要实现如下的效果: 要实现上面的效果,需要知道图片的宽高,父容器的宽高,然后计算缩放后的宽高. ...

  5. PHP之APC缓存详细介绍

    1.APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫"可选PHP缓存".它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分: ...

  6. 记录Access数据库更新操作大坑一个

    对于更新Access数据库的操作,必须保持参数数组与sql语句中参数顺序一致,如下: public bool Update(MyModel model) { StringBuilder strSql ...

  7. c语言学习之基础知识点介绍(五):关系运算式和逻辑运算式

    本节主要说关系运算式和逻辑运算式. 一.关系运算式 1.等于(==):判断左边的表达式是否等于右边的表达式 2.大于(>):判断左边的表达式是否大于右边的表达式 3.大于等于(>=):判断 ...

  8. C# 读取txt文本内容写入到excel

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. java开发规范总结_代码编码规范

    规范需要平时编码过程中注意,是一个慢慢养成的好习惯 1.基本原则 强制性原则:     1.字符串的拼加操作,必须使用StringBuilder:     2.try…catch的用法 try{ }c ...

  10. oraclesql日志

    select * from v$logfile;  select * from v$sql select sql_text,module,action,parsing_schema_name,firs ...