Diary by YosukeSugahara
iPhone・iPadアプリ開発

OpenCV使用時はUIImageを変換!|iPhone SDK

Category:

 Posted at July 17, 2010 2:37 PM
OpenCV使用時のUIImageオブジェクト|iPhone SDK OpenCVで画像データの「UIImageオブジェクト」を使用するには、OpenCV独自に用意されている「IpIImage」構造体に変換する必要があります。つまりOpenCVでは「UIImageオブジェクト」そのままでは使用できません。必ず「IpIImage」へ変換する作業が発生します。

【UIImageからIplImageを作成 】
// NOTE 戻り値は利用後cvReleaseImage()で解放してください
- (IplImage *)CreateIplImageFromUIImage:(UIImage *)image {
// CGImageをUIImageから取得
CGImageRef imageRef = image.CGImage;

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
// 一時的なIplImageを作成
IplImage *iplimage = cvCreateImage(
cvSize(image.size.width,image.size.height), IPL_DEPTH_8U, 4
);
// CGContextを一時的なIplImageから作成
CGContextRef contextRef = CGBitmapContextCreate(
iplimage->imageData, iplimage->width, iplimage->height,
iplimage->depth, iplimage->widthStep,
colorSpace, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault
);
// CGImageをCGContextに描画
CGContextDrawImage(
contextRef,
CGRectMake(0, 0, image.size.width, image.size.height),
imageRef
);
CGContextRelease(contextRef);
CGColorSpaceRelease(colorSpace);

// 最終的なIplImageを作成
IplImage *ret = cvCreateImage(cvGetSize(iplimage), IPL_DEPTH_8U, 3);
cvCvtColor(iplimage, ret, CV_RGBA2BGR);
cvReleaseImage(&iplimage);
//戻り値のIplImageは利用後にcvReleaseImageで解放

return ret;
}


【IplImageからUIImageを作成】
// NOTE IplImageは事前にRGBモードにしておいてください。
- (UIImage *)UIImageFromIplImage:(IplImage *)image {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
// CGImageのためのバッファを確保
NSData *data =
[NSData dataWithBytes:image->imageData length:image->imageSize];
CGDataProviderRef provider =
CGDataProviderCreateWithCFData((CFDataRef)data);
// IplImageのデータからCGImageを作成
CGImageRef imageRef = CGImageCreate(
image->width, image->height,
image->depth, image->depth * image->nChannels, image->widthStep,
colorSpace, kCGImageAlphaNone|kCGBitmapByteOrderDefault,
provider, NULL, false, kCGRenderingIntentDefault
);
// UIImageをCGImageから取得
UIImage *ret = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return ret;
}

詳細はこちらから!
 このエントリーをはてなブックマークに追加  
最近購入した一冊。今迄専門書が少なかった欧文組版に関して解説されている書籍です。欧文の組版に関しては日本人なので不安な所だらけでした。最近少しづつ読んでいます。目から鱗の一冊です。

【内容紹介】『欧文書体』『欧文書体2』に続く、「タイポグラフィの基本BOOK」シリーズ第三弾。デザイナー、編集者、企業担当者向けに、実務的な欧文の組み方を指導した本。 実際にコンピュータ上で欧文を組んでみる練習問題や、欧文を組むときの具体的な19の注意事項などを掲載。

amazon.co.jpで購入!
東京都在住。
WEBデザイン・グラフィックデザイン関係の仕事をしています。
このブログは日々思った事、仕事に関するメモ代わりとして更新しています。
デザイン・制作の依頼は下記からお気軽にご相談下さい。

SUGAHARA DESIGN : http://www.sugahara.co/
iPhone・iPadアプリ開発

iPhoneアプリ サンプルコード

2010年7月20日 今日現在で31種類のiPhoneアプリのサンプルコードを

Date : July 20, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

OpenCV:画像をグレースケール化|iPhone SDK

画像処理で良く行われるグレースケース化。カラー写真をモノクロ写真に変換する時に

Date : July 17, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

OpenCV使用時の表色系に関して|iPhone SDK

OpenCV使用時の表色系に関して。iPhoneで撮影した画像はRGBです。O

Date : July 17, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

OpenCV使用時はUIImageを変換!|iPhone SDK

OpenCVで画像データの「UIImageオブジェクト」を使用するには、Ope

Date : July 17, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

iPhoneアプリ開発の虎の巻

iPhoneアプリ開発の虎の巻。結構良くまとまっていて勉強になります。アプリ開

Date : July 12, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

位置とサイズを管理するクラス|iPhone SDK

iPhone・iPadアプリ開発時、UIViewやそのサブクラスで位置とサイズ

Date : July 10, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

カメラ画像の取得・縮小方法|iPhone SDK

iPhoneアプリ開発で「カメラで撮影した・フォトライブラリから選択した画像」

Date : July 09, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

UIViewの基本|iPhone SDK

「UIView」は、画面を構成する要素の基本クラス。この「UIView」の組み

Date : July 05, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

iPhone SDK 新規プロジェクトファイルの作成

iPhone・iPadアプリ開発時「Xcode」を使用して、新規プロジェクトフ

Date : July 02, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

iPhone SDK ボタン画像の設定方法

Interface Builderで作成するボタンはデフォルトでは角が丸まって

Date : July 01, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

Interface Builder インスペクタウィンドウの表示

iPhone・iPadアプリ開発時に「UI(インターフェース)」を設計する為の

Date : July 01, 2010
iPhone・iPadアプリ開発
iPhone・iPadアプリ開発

GUIデザインに使用できそうなフリーアイコン

GUIデザインに使用できそうなフリーアイコン。iPhoneアプリ・iPadアプ

Date : June 30, 2010
iPhone・iPadアプリ開発