質問編集履歴
4
より多くの方に見てもらえるようにタグを追加
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
3
タイトルの変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
OpenCVで検出した色の面積を求めたい
|
test
CHANGED
File without changes
|
2
補足情報を編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -226,6 +226,7 @@
|
|
226
226
|
detectColor(mMatChange!!) // 輪郭面積に応じた処理を実行
|
227
227
|
return mMat // プレビュー画像を返す
|
228
228
|
}
|
229
|
+
...
|
229
230
|
```
|
230
231
|
|
231
232
|
### 参考サイト
|
1
補足情報を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -176,11 +176,57 @@
|
|
176
176
|
}
|
177
177
|
```
|
178
178
|
|
179
|
-
### 補足情報(FW/ツールのバージョンなど)
|
179
|
+
### 補足情報①(FW/ツールのバージョンなど)
|
180
180
|
- iOS:15.7
|
181
181
|
- Xcode:13.1
|
182
182
|
- OpenCV:opencv-4.6.0-ios-framework
|
183
183
|
[OpenCV4.6.0ダウンロードサイト](https://github.com/opencv/opencv/releases)
|
184
|
+
|
185
|
+
### 補足情報②(Android版について)
|
186
|
+
以前に、Androidでも同様の機能を持ったアプリを作成しました。
|
187
|
+
その際は、下記のプログラムで輪郭の面積を出すことができていました。
|
188
|
+
```kotlin
|
189
|
+
// 認識した色に応じた処理を実行
|
190
|
+
...
|
191
|
+
private fun detectColor(img:Mat):Boolean {
|
192
|
+
Core.inRange(img, Scalar(0.0, 0.0, 0.0)
|
193
|
+
, Scalar(255.0, 255.0, 255.0)
|
194
|
+
, img)
|
195
|
+
// 色の輪郭の面積に応じた処理を実行
|
196
|
+
return compareContourColor(detectContour(img))
|
197
|
+
}
|
198
|
+
|
199
|
+
private fun detectContour(img:Mat): Int {
|
200
|
+
// ガウシアンフィルタで画像をぼかす
|
201
|
+
Imgproc.GaussianBlur(img, img, Size(5.0, 5.0), 5.0)
|
202
|
+
// 輪郭を取得
|
203
|
+
Imgproc.Canny(img, img, 10.0, 360.0)
|
204
|
+
// 輪郭の情報を取得
|
205
|
+
val contours: List<MatOfPoint> = ArrayList()
|
206
|
+
val hierarchy = Mat.zeros(Size(5.0, 5.0), CvType.CV_8UC1)
|
207
|
+
Imgproc.findContours(img,
|
208
|
+
contours, // 輪郭情報を格納
|
209
|
+
hierarchy, // 階層構造を格納
|
210
|
+
Imgproc.RETR_EXTERNAL, // 輪郭抽出モードを指定
|
211
|
+
Imgproc.CHAIN_APPROX_SIMPLE // 輪郭の表示方法を指定
|
212
|
+
)
|
213
|
+
return contours.size
|
214
|
+
}
|
215
|
+
|
216
|
+
private fun compareContourColor(size:Int):Boolean {
|
217
|
+
... // 取得した輪郭面積に応じた処理を実行
|
218
|
+
}
|
219
|
+
|
220
|
+
// カメラ映像の各フレームに対する処理
|
221
|
+
override fun onCameraFrame(inputFrame: CameraBridgeViewBase.CvCameraViewFrame): Mat? {
|
222
|
+
// カメラプレビューの各フレームをフルカラーで取得
|
223
|
+
mMat = inputFrame.rgba()
|
224
|
+
Imgproc.cvtColor(mMat, mMatChange, Imgproc.COLOR_RGBA2BGR) // MatをRGBAからBGRに変換
|
225
|
+
Imgproc.cvtColor(mMatChange, mMatChange, Imgproc.COLOR_BGR2HSV) // MatをBGRからHSVに変換
|
226
|
+
detectColor(mMatChange!!) // 輪郭面積に応じた処理を実行
|
227
|
+
return mMat // プレビュー画像を返す
|
228
|
+
}
|
229
|
+
```
|
184
230
|
|
185
231
|
### 参考サイト
|
186
232
|
[OpenCVのSwift用ドキュメント](http://xtravision.stars.ne.jp/opencv-objc-doc-test/docs/index.html)
|