###前提・実現したいこと
・問題点
OpenCVを用いた画像処理アプリケーションを作っています。
OpenCVを利用するために画像をSwiftからObjective-C++に渡しているのですが、どうやら.jpg以外(.pngや.bmp)渡せていないような現象が起きています。画像を一度渡してcv::Matに変換してからUIImageに変換し直して画像を返すテスト関数を用いているのですが、返してもらった画像を画面に出力しようとしても反応がなく白色のままです。また、Objectibe-C++での関数内で受け取った画素にアクセスするコードを書いても画素にアクセスできない(全て0になっている)ことから画像自体渡せていないのではないかと推察しています。
.jpgの場合はうまくいくのですが、.pngや.bmpの場合ですと何か処理をしないといけないのでしょうか?
画像ファイルはファイル共有に置いてあります。
お手数をおかけしますがご教授お願いいたします。
・実現したいもの
ファイル共有で追加した画像(.pngもしくは.bmp)をObjective-C++で利用できるようにしたい。
###該当のソースコード
.swift
var FileImage:UIImage! //ドキュメントパスの取得 let documentPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0] as String //ファイルの場所(textは画像ファイル名) let imageFilePath = documentPath + "/" + text + ".png" //パスから画像を読み込む FileImage = UIImage(contentsOfFile: imageFilePath) // // 中間 省略 // //Objective-C++の関数に画像を渡す ここが問題の箇所(画像が渡せていない) let image = self.detector.imageTest(FileImage) self.areaImageView.image = image
.mm
//画像受け渡しテスト関数 -(UIImage *)imageTest:(UIImage *)FileImage{ cv::Mat srcImage; //UIImageからMatに変換 UIImageToMat(FileImage,srcImage); int num = srcImage.at<cv::Vec3b>(70,70)[0]; //VisualStudioで確認した座標を入れても全部0になっていた 70,70は一例です //MatからUIImageへ変換 UIImage *dstImage = MatToUIImage(srcImage); return dstImage; }
下の図は.jpgと.pngをテスト関数に渡して返してもらった画像を画面に出力した時の様子になっています。画面上部の画像はカメラ画像となっているので気にしないでください。
回答1件
あなたの回答
tips
プレビュー