Opencv for Delphiと呼ばれるオープンソースプロジェクトを編集しています。このプロジェクトは、Delphi 6、Delphi 2009、Delphi xe2でコンパイルできます。OpenCVをどのようにUnicodeバージョンのDelphiで使用できますか?
Delphi 6のコンパイルで、互換性のないもの(例:Application.MainFormOnTaskbar := True;
)を削除しました。
実行時にd6 appはエラーなしで正常に動作しますが、残りはコンパイルは良好ですが、cvopencv.dll
を呼び出すと実行時エラーが発生します。
元のプロジェクトは、うまく動作するDelphi 2007でコンパイルされたスペイン語のプロジェクトです。
d6 exeでは、「???????」以外のものを読み取ることができません。 cvopencv.dll
を呼び出すと、UNICODEの問題を意味するスペイン語で表示されるエラーが発生します。
私は、Delphi 2009以上で、このプロジェクトの作業は(まだよくコンパイルD2009)にするために何ができるの
====================== === David Heffemansの後に答えた:
procedure TForm1.Button2Click(Sender: TObject);
var
file1 : PAnsiChar; // "haarcascade_frontalface_alt.xml";
file2 : PAnsiChar; //"haarcascade_eye.xml";
file3 : PAnsiChar; //"haarcascade_upperbody.xml";
SourceFileName : AnsiString;
StorageType : Integer;
ImSize : CvSize;
begin
memo1.Lines.Clear;
GetMem(Storage, SizeOf(CvMemStorage));
SourceFileName:=Edit1.Text;
StorageType:=0;
storage:=nil;
storage :=cvCreateMemStorage(storageType);
file1 := PAnsiChar(ExtractFilePath(Application.ExeName)+'haarcascade_frontalface_alt.xml');
file2 := PAnsiChar(ExtractFilePath(Application.ExeName)+'haarcascade_eye.xml');
file3 := PAnsiChar(ExtractFilePath(Application.ExeName)+'haarcascade_upperbody.xml');
cascade_f := cvLoad(file1, nil, nil, nil);
cascade_e := cvLoad(file2, nil, nil, nil);
cascade_ub := cvLoad(file3, nil, nil, nil);
if cascade_f=nil then ShowMessage('Íå ìîãó çàãðóçèòü êàñêàä Face');
if cascade_e=nil then ShowMessage('Íå ìîãó çàãðóçèòü êàñêàä Eye');
if cascade_ub=nil then ShowMessage('Íå ìîãó çàãðóçèòü êàñêàä UpperBody');
img := cvLoadImage(PAnsiChar(AnsiString(SourceFileName)), 1);
cvNamedWindow((PAnsiChar(AnsiString(Edit1.Text))), 1);
detectEyes(img);
cvShowImage(PAnsiChar(AnsiString(SourceFileName)), img);
end;
end.
ありがとう;私はあなたのガイドラインを通過したと思うが、同じ問題を抱えていると思う。新しい(更新された)ソースコードを答えに付け加えた。 – VibeeshanRC
さて、すぐに私は 'file1:= PAnsiChar(ExtractFilePath .....'これはまったくしないと言われているコードですが、 'ExtractFilePath'は' UnicodeString'を 'AnsiString'に変換して返します。 –
ありがとうございます、あなたのガイドラインに正しく従わなかったのは残念です – VibeeshanRC