ご報告ありがとうございます
当時より BASEIMAGE 構造体のメンバー変数が増えたので、ローカル変数として宣言した
BASEIMAGE 構造体のサンプルプログラムで値を初期化していないメンバー変数に不定な値が
入ってしまって CreateGraphFromBaseImage が失敗していました
BASEIMAGE 構造体をゼロで初期化することで正常に動作するようになりましたので、
よろしければお試しください m(_ _)m
#include <cv.h>
#include <highgui.h>
#include <ctype.h>
#include <string.h>
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
CvCapture *capture ;
IplImage *image ;
int GrHandle ;
BASEIMAGE BaseImage ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリ初期化処理
if( DxLib_Init() == -1 )
return -1;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// カメラからのビデオキャプチャを初期化する
capture = cvCreateCameraCapture( 0 ) ;
// BASEIMAGE 構造体を0で初期化
memset( &BaseImage, 0, sizeof( BASEIMAGE ) ) ;
// カラーフォーマットは変化しないので最初に設定
CreateFullColorData( &BaseImage.ColorData ) ;
// ミップマップではないので0
BaseImage.MipMapCount = 0 ;
// 空のグラフィックハンドルの値を初期化
GrHandle = -1 ;
// メインループ
while( ProcessMessage() == 0 )
{
// フレームを取得
image = cvQueryFrame( capture ) ;
// BASEIMAGE の要素を埋める
BaseImage.GraphData = image->imageData ;
BaseImage.Width = image->width ;
BaseImage.Height = image->height ;
BaseImage.Pitch = image->widthStep ;
// グラフィックハンドルを作成しているかどうかで処理を分岐
if( GrHandle == -1 )
{
// 最初の場合はグラフィックハンドルの作成と映像の転送を一度に行う
GrHandle = CreateGraphFromBaseImage( &BaseImage ) ;
}
else
{
// 2回目以降はグラフィックハンドルへ映像を転送
ReCreateGraphFromBaseImage( &BaseImage, GrHandle ) ;
}
// フレームの内容を画面に描画
DrawGraph( 0, 0, GrHandle, FALSE ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// ビデオキャプチャの後始末
cvReleaseCapture( &capture ) ;
// DXライブラリ使用の終了処理
DxLib_End() ;
// ソフトの終了
return 0 ;
}
( 過去ログの方も修正しておきました )