• ベストアンサー

BITMAPINFOHEADERの扱いについて

mixmarionの回答

  • ベストアンサー
  • mixmarion
  • ベストアンサー率100% (2/2)
回答No.1

それらのAPIを使ったことはないのですが、MSDNの説明によると、AVIStreamGetFrameOpenは「希望するDIBのフォーマットを指定する」もののようなので、「BITMAPINFOHEADERを取得するまでは出来た」というのが怪しい気がします。 取得できたのではなく、「希望のフォーマットを指示した」のではないでしょうか? もしそうだとするなら、AVIStreamGetFrame を呼んで DIB(packed)を取得すると、当該フレームのDIBが得られるのだと思います。 以下に、擬似コードを示します。 PAVISTREAM pavi = AVIFileGetStreamで取得したポインタ; LPBITMAPINFOHEADER pbiWanted = 希望のフォーマットを定義したBITMAPINFOHEADER; PGETFRAME pGetFrame = AVIStreamGetFrameOpen(pavi, pbiWanted); long lPos = 取得したいフレーム位置; LPVOID pDIB = AVIStreamGetFrame(pGetFrame, lPos); ※後始末やエラー処理は省略してます。 MSDNによると、pDIB には「packed DIB」を指すポインタが返されます。 これを色々加工するということになると思います。 DIBさえ手に入れば、後は好きにやれますよね? ただ、「packed」が返されても扱いにくいと思います。 AVIStreamGetFrameOpen に与える BITMAPINFOHEADER で、非packed の形式を指定すれば、非packedのDIBが返されるように思えます。 (試してないので分らないんですが) 上記、全てMSDNを見ただけで語ってますので、はずしてたらすみません。

NamuBP
質問者

お礼

お礼の方に書くのを間違えてしまいました。

NamuBP
質問者

補足

わざわざ調べてまでの回答ありがとうございます。 回答を拝見させていただきました。 一応、プログラム上でやっていた事を書きますと PAVISTREAM pavi = AVIFileGetStreamで取得したポインタ; PGETFRAME pGetFrame = AVIStreamGetFrameOpen(pavi, NULL); LPBITMAPINFOHEADER bih = (LPBITMAPINFOHEADER)AVIStreamGetFrame(pGetFrame,0); というやり方がとあるサンプルコードにあったため これを使いデバッグを行ったところ bihの構造体の中に24bitビットマップのヘッダ情報が入っており BITMAPINFOHEADERが取得できたと書きこみました。 どいうやら私自身がポインタの事をいまいち分かっておらず いろいろと勘違いをしていたようです。 もう少し勉強してから出直してきます。 ありがとうございました。

関連するQ&A

  • VBをアンインストールするには?

    VBをアンインストールするにはどれを削除すればいいでしょうか? プログラムと追加には ・Microsoft Visual Basic 2008 Express Edition SP1-日本語 ・Microsoft Visual C++ 2005 Redistributable ・Microsoft Windows SDK for Visual Studio 2008 SP1 Express Tools for.NET Framework -jpn ・Microsoft Windows SDK for Visual Studio 2008 SP1 Express Tools for Win32 があります。 C++なのにアイコンがVBなので これを全部アンインストールすればいいですか? よろしくお願いします。 (当方vistaです。)

  • windows10でVC6.0++のclを使いたい

    cl.exeの場所:C:\Program Files\Microsoft Visual Studio\VC98\Bin 環境変数INCLUDE設定:C:\Program Files\Microsoft Visual Studio\VC98\Include 環境変数LIB設定:C:\Program Files\Microsoft Visual Studio\VC98\Lib を登録したのですが、mspdb60.dllがないといわれました。 検索したらあるのですが、 どうすれば、Windows10でvc6.0++のCコンパイラを使えますか? 教えてくださいよろしくお願いします。

  • Visual Studio .NET (C++) は今でも購入可能でしょうか?

    MicrosoftのC++開発環境の現行商品は全て「Visual Studio 2005」に切り替わっているのでしょうか?Amazonで「Visual Studio .NET 2003」を買おうと思ったのですが、手に入らないようです。(「Visual Studio 2005」をいったん購入したのですが、いっしょに使おうとしたソフトとの相性が悪く使えないので、実績のある「Visual Studio 2005」に戻そうとしています。LIBCD.libとかSTL関連ライブラリとのリンクがうまくいきません。)

  • OpenCVを使いたいのですが

    Visual C++ 2010にOpenCV2.4.3の導入し、設定を終えたのでプログラムをビルドさせるとエラーが吐き出され動作しません。 どなたか原因がわかる方はいらっしゃらないでしょうか? 【プログラム】 #include<stdio.h> #include<openCV2/opencv.hpp> #ifdef _DEBUG #pragma comment(lib,"opencv_core243d.lib") #pragma comment(lib,"opencv_highgui243d.lib") #pragma comment(lib,"opencv_objdetect243d.lib") #else #pragma comment(lib,"opencv_core243d.lib") #pragma comment(lib,"opencv_highgui243d.lib") #pragma comment(lib,"opencv_objdetect243d.lib") #endif //-------------------------------------------------------- //main int main(int argc,char* argv[]) { const char* szWndName="画像"; if(argc<2) { fprintf(stderr,"入力ファイル名を指定してください。\n"); return -1; } IplImage *img=cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR); if(img==NULL) return -1; cvNamedWindow(szWndName); cvShowImage(szWndName, img); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&img); return 0; } 【ビルド後にでるエラーメッセージ】 ------ すべてのリビルド開始: プロジェクト: OpenCV, 構成: Debug Win32 ------ TEST02.c C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2054: 'using' の後に '(' が必要です。 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2061: 構文エラー : 識別子 'using' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2054: 'using' の後に '(' が必要です。 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'using' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'abs' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'atexit' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atof' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atoi' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atol' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'bsearch' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'calloc' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'div' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'exit' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'free' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'getenv' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(25): error C2061: 構文エラー : 識別子 'labs' この後はエラー表記が続きます。

  • Visual Studio 2015ダウンロード

    Visual Studio 2015をダウンロードしたのですが、思っていたのと違って困っています。 Visual Studio 2015で検索し、たどり着いたサイトで vs_community_JPN__1535640253.1486971071.exeというモジュールをダウンロードし、 インストールしました。 「Blend for Visual Studio 2015」というのがインストールされました。 やりたいことは、VBでWindowsアプリを作って、インストーラでインストールです。 VSI_bundle.exeというのも別途インストールしました。 ところが、「Blend for Visual Studio 2015」というヤツがそもそも思っていたのと違うようで、 「新しいプロジェクト」を選択し、 Visual Basicのところを探しても「Windowsフォームアプリケーション」が存在しません。 下記の3つしかありません。 「WPFアプリケーション」 「Silverlightアプリケーション」 「Silverlightクラスライブラリ」 新規作成を一旦諦め、 Visual Studio 2013で作ったソースを開いてみたところ、それは動きました。 既存のモジュールは動くし変更できるけど、新規作成の方法が分からない。 既存のモジュールから、 Installer Projectsを呼び出そうとしても 「追加」「新しいプロジェクト」を選択しても、やっぱり上がってくる項目が少なくて、目当ての「Setup Project」が挙がってきません。 2015を一旦諦め、古いバージョンをダウンロードしました。 「Microsoft Visual Studio Express 2013 for Web Update 4」 https://www.microsoft.com/ja-jp/download/details.aspx?id=44912 から「wdexpress_full.exe」をダウンロードしてインストールしました。 Visual Studio Express 2013を起動してみると、 「ああ、コレコレ、これだった。」という感じです。 「Windowsフォームアプリケーション」も存在しました。 これで一応、なんとかなりますが、2015では同じことはできないのですか? Microsoft Visual Studio 2015 Installer Projects を利用してインストーラーを作成する https://www.ipentec.com/document/document.aspx?page=visual-studio-2015-create-installer-using-microsoft-visual-studio-2015-installer-projects このサイトでは、2015でやっているみたいですけど、この2015はまた違うヤツですか? vs_community_JPN__1535640253.1486971071.exeというモジュールが悪いのですか? 使い方が悪いのですか? それとも2015の無償版では無理なのですか? 「Blend for」ってどういう意味ですか? 以上、よろしくお願いします。 <ダウンロードした操作> ホーム > 製品情報 > Visual Studio 2015 https://www.microsoft.com/ja-jp/dev/products/visual-studio-2015.aspx  ↓ ダウンロード https://www.visualstudio.com/downloads/?wt.mc_id=o~msft~mscom~jpvs2015  ↓下記のモジュールをダウンロード vs_community_JPN__1535640253.1486971071.exe  ↓インストール Blend for Visual Studio 2015 <やりたかったことの例> Microsoft Visual Studio 2015 Installer Projects を利用してインストーラーを作成する https://www.ipentec.com/document/document.aspx?page=visual-studio-2015-create-installer-using-microsoft-visual-studio-2015-installer-projects

  • VCでの外部アプリ操作

    VCを使用してソフト(exeファイル)を操作(値入力や結果の取得)することは可能なのでしょうか。可能であるならば方法を教えて頂けないでしょうか。 開発環境はOS:Windows Vista 言語:Microsoft Visual studio 2005 C++ exeファイルはDeliphで作成されたものであるデータファイルを読み込んで値を計算方法・設定値を入力し結果を出力するソフトです。

  • DirextXエラー:ファイル'dxerr9.lib'を開くことができません。

    ------------------------------------ fatal error LINK1104: DirextXエラー:ファイル'dxerr9.lib'を開くことができません。 ------------------------------------ Visual Studio.NETで、 上のようなエラーが出て実行できません。 インクルードファイルに D:/Program Files/DX9SDK(April 2005)/Include プロジェクトのプロパティ→リンカ→入力→追加の依存ファイルに dsound.lib dinput8.lib dxerr9.lib d3dx9.lib d3d9.lib d3dxof.lib dxguid.lib 以上2つを設定してあります。 本(DirectX ゲームグラフィックスプログラミング ver2.0)の通りに設定したはずなのですが、なぜかエラーが出ます。 どこが問題なのかまったく分からないので、なにか問題がありそうなところがあったら教えてください。 以下、ビルド環境です。 VAIO VGN-S2 Pentium M (1.60GHz) 256MB MOBILITY RADEON 9200 WinXP Home version 2002 SP2 Visual Studio .NET 2003 よろしくお願いします。

  • Visual Basic.Netの環境条件って

    プログラム初心者です。 私のやりたいことに対して、 次の考えがあっているかを教えてください。 プログラミングは Visual Basic.Net を行いたいと思ってます。 (Visual Basic 6.0ではありません) パソコンにはすでに Microsoft Visual Studio 2005 と Microsoft .NET Framework SDK がインストールされてます。 この環境で Visual Studio2005 を起動させて VisualBasic2005を操作することが Visual Basic.Netのプログラミングをしている ということになるのしょうか? つまり、.Net FrameWork がインストールされていれば、 ○○.Netの開発環境ということになると思っているのです。 「Visual Studio2005 だけの環境」 = ○○.Netではない。 「Visual Studio2005 +.NET Framework 」= ○○.Netである。 申し訳ありませんが、もし間違っていたら Visual Basic.Netの環境条件を教えてください。 よろしくお願いします。

  • VC++2010のmsvcp100.dllについて

    私は、windows7 64bitで「Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1」や「Microsoft Windows SDK for Windows 7 and .NET Framework 4」 をインストールしました。 しかし、Message: Visual Studio C++ 2010のProgram Files (x86)\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT\msvcp100.dllが見当たりません。redistフォルダ自体が存在しません。 どうすれば、Program Files (x86)\Microsoft Visual Studio 10.0\VC\いかにredistフォルダとmsvcp100.dllを作成することができますか?

  • ヴァージョン4を入れたので3.5はアンインストールしたほうがいいか?(

    ヴァージョン4を入れたので3.5はアンインストールしたほうがいいか?(.NET Framework) vistaです。 Microsoft Visual Studio 2010 Expressをインストールしたときに Microsoft.NET Framework 4 Client Profile Microsoft.NET Framework 4 Client Profile language Pack - 日本語 Microsoft.NET Framework 4 Extended Microsoft.NET Framework 4 Extended language Pack - 日本語 Microsoft.NET Framework 4 Muliti - targeting Pack をインストールしました。 以前Visual Studio2008を使ってたときの Microsoft.NET Framework 3.5 SP1  Microsoft.NET Framework 3.5 language Pack  SP1 - 日本語 もまだインストールされたままなのですが こちらはアンインストールしても問題ないですか? すでにVisual Studio2008はアンインストール済みです。