前提・実現したいこと
取得した映像からリアルタイムに赤色(赤色の円など)を検出して、その赤色領域の中心座標を取得したいです。
発生している問題・エラーメッセージ
MatOfPoint型をPoint2f型の配列に変換するところでつまづいています。c++ではうまくいった処理がSwiftでは、エラーは出ませんが実行すると処理が停止します。MatOfPoint型のlocationという変数をどうにかしてPoint2f型の配列pointにしたいです。location.toArray()以外の方法があるのでしょうか?
エラーメッセージ Thread 1: "Incompatible Mat" ### 該当のソースコード func convertColor(source srcImage: UIImage) -> UIImage { let srcMat = Mat(uiImage: srcImage) let dstMat = Mat() let dstMat2 = Mat() let s_min = Scalar(120, 150, 75) let s_max = Scalar(130, 255, 255) var center:Point2f = Point2f(x: 0.0, y: 0.0) var radius:Float = 0.0 var prac = [Point2f]([center]) var location = MatOfPoint2f() //HSV画像に変換 Imgproc.cvtColor(src: srcMat, dst: dstMat, code: .COLOR_BGR2HSV) //赤色だけを白色、赤色以外を全て黒色に変換 Core.inRange(src: dstMat, lowerb: s_min, upperb: s_max, dst: dstMat2) //白画素値の位置座標をMat型で取得 Core.findNonZero(src: dstMat2, idx: location) if(!location.empty()){ var point = [Point2f](location.toArray()) Imgproc.minEnclosingCircle(points: point, center: center, radius: &radius) } return dstMat2.toUIImage() } ```ここに言語名を入力 Swift ### 試したこと var point = [Point2f](location.toArray())の部分をvar point = [Point2f](arrayLiteral: (Point2f)(x: -10.0,y: 10.0),(Point2f)(x: 10.0,y: 10.0)) と具体的な値を入力するとエラーが出ないことは確認しています。 ### 補足情報 Swift version 5.3 Xcode version 12.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。