0

バージョン 9で利用できるようになった、よく知られている「jpeglib」を使用してみます。

概要: 私はMS Visual C++ 2010 Expressを使用して C でプログラミングを始めたばかりで、最終的に C の本を読みました。私の目標は、RGB(.bmp) ファイルを JPEG に圧縮することです。そこで、jpeglib (v9) をダウンロードし、すべてのインストールなどを *.txt ファイルで読み取りました。C ファイルをコンパイルして、 cjpeg.exedjpeg.exejpeg.libなどを取得することができました。

この成功の後、私はexample.cを使って jpeg をより深く理解し、圧縮を制御しようとしました。-> うまくいきませんでした。そこで、OpenCV に含まれている jpeglib を使ってみました。OpenCV コード サンプルは正常にコンパイルされますが、動作しない結果は同じです。

多くのサンプル、問題の解決策、および jpeglib の使用方法に関するヒントをググってみました。ここで見つけた最も役立つ情報。しかし、結果として、独自の jpeg-tool または example.c をコンパイルすることはできませんでした (write_JPEG_file()関数を書き直しました)。

質問#include "jpeglib.h": 他のすべてのプログラマーが jpeg 関数を正常に実行するためにコード内で使用する場合、基本的に何が間違っている可能性がありますか? 私にとって、このファイルを含めるだけでは十分ではないようです。そのため、私はあなたに質問し、私の問題を解決するのにも役立たなかった1年前の質問を再開する必要があります. これらの問題を解決しようと何度も試みているため、具体的なエラー メッセージをお伝えすることはできません。

OpenCV 2.4.6 を使用するための現在のMS-VC++2010 構成は次のとおりです。

  1. C/C++ -> 一般 -> 追加のインクルード ディレクトリ:
    • C:\opencv\build\include
    • C:\opencv\build\include\opencv
    • C:\opencv\build\include\opencv2
    • C:\opencv\include
    • C:\opencv\include\opencv
    • C:\opencv\include\opencv2
    • C:\opencv\サードパーティ\libjpeg
  2. リンカー -> 一般 -> 追加のライブラリ ディレクトリ:
    • C:\opencv\build\x86\vc10\lib
  3. リンカー -> 入力 -> 追加の依存関係:
    • opencv_core246d.lib
    • opencv_imgproc246d.lib
    • opencv_highgui246d.lib
    • opencv_ml246d.lib
    • opencv_video246d.lib
    • opencv_features2d246d.lib
    • opencv_calib3d246d.lib
    • opencv_objdetect246d.lib
    • opencv_contrib246d.lib
    • opencv_legacy246d.lib
    • opencv_flann246d.lib
    • jpeg.lib [これをC:\opencv\build\x86\vc10\libに追加しました]

最後に、私がすでに読んだいくつかのスレッド:

あなたが知りたいことが欠けている場合は、この情報を追加するために最善を尽くします!

編集 - いくつかのエラー メッセージ:

1>jpeg_coder.obj : error LNK2001: unresolved external symbol ""unsigned char * image_buffer" (?image_buffer@@3PAEA)".

1>jpeg_coder.obj : error LNK2001: unresolved external symbol ""int image_height" (?image_height@@3HA)".

1>jpeg_coder.obj : error LNK2001: unresolved external symbol """int image_width" (?image_width@@3HA)".

最初のシンボルは as で型jpeglib.h定義JSAMPLE FAR *JSAMPROWし、2 番目と 3 番目はrdjpgcom.casで定義する必要がありますunsigned int image_height, image_width;

運が良ければ、jpeglib を実行するために必要なことがわかったのかもしれません。現在の状態では、問題の解決策が正しいかどうかを確認し、再確認する必要があります。この度は、私の問題にご関心をお寄せいただき、誠にありがとうございます。解決策に確信が持てたらすぐに投稿します。

問題 解決策: jpeglib を使用するために OpenCV を正しくセットアップしませんでした。私が犯した間違いは、間違った *.lib-file をリンクすることでした。リンク用の適切なファイルはlibjpegd.lib. jpeglib v6.2 が v9 ではなく OpenCV 2.4.6 に含まれているのは残念です。HAVE_JPEGOpenCV 内で jpeglib 関数を使用するために追加するヒントは、完全に無視しました。今のところ、問題は解決しています。

4

1 に答える 1

0

問題 解決策: jpeglib を使用するために OpenCV を正しくセットアップしていませんでした。私が犯した間違いは、間違った *.lib-file をリンクすることでした。

リンク用の適切なファイルはlibjpegd.lib.

jpeglib v6.2 が v9 ではなく OpenCV 2.4.6 に含まれているのは残念です。HAVE_JPEGOpenCV 内で jpeglib 関数を使用するために追加するヒントは、完全に無視しました。この問題を解決しようとしたすべての人に感謝します。今のところ、問題は解決しています。

于 2013-10-19T15:20:31.247 に答える