###前提・実現したいこと
androidstudioとopenCVを使って、
カメラで撮影している物から赤色のみを抽出するアプリを開発しています。
現在、色を抽出した白と黒の画像から画面全体の画素を調べて
連続する白色の領域のみを数えようと考えています。
###発生している問題・エラーメッセージ
画素を調べる際に
HSV形式から画素の情報を調べる方法はあるのでしょうか。
私が調べた限りだと、RGBから調べているものが多く
もしかしたらHSVからRGBに変換しなくては出来ないのでしょうか。
参考までにこちらが色抽出する部分のコードです。
java
1 private Mat m_temp; //抽出結果の画像 2 3 public Mat onCameraFrame(Mat inputFrame) { 4 Mat src = inputFrame; 5 Mat dst = Mat.zeros(inputFrame.width(), inputFrame.height(), CV_8U); 6 Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2HSV); 7 8 Mat src2 = dst; 9 Mat dst2 = Mat.zeros(inputFrame.width(), inputFrame.height(), CV_8U); 10 Scalar low = new Scalar(165, 20, 30);//下限 11 Scalar high = new Scalar(179, 255, 255);//上限 12 Core.inRange(src2, low, high, dst2);//色抽出 13 return dst2; }}
###試したこと
保存した結果画像「m_temp」を
Imgproc.cvtColor(m_temp,m_temp,Imgproc.COLOR_HSV2RGB)
でRGBに変換しようと試してみるとこのようなエラーが出てしまいました。
###エラーメッセージ
1-08 18:42:30.868 15086-15154/com.example.janome.color2 E/cv::error(): OpenCV Error: Assertion failed (scn == 3 && (dcn == 3 || dcn == 4) && (depth == CV_8U || depth == CV_32F)) in void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int), file /build/master_pack-android/opencv/modules/imgproc/src/color.cpp, line 9825 11-08 18:42:30.869 15086-15154/com.example.janome.color2 E/org.opencv.imgproc: imgproc::cvtColor_11() caught cv::Exception: /build/master_pack-android/opencv/modules/imgproc/src/color.cpp:9825: error: (-215) scn == 3 && (dcn == 3 || dcn == 4) && (depth == CV_8U || depth == CV_32F) in function void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int) 11-08 18:42:30.870 15086-15154/com.example.janome.color2 E/AndroidRuntime: FATAL EXCEPTION: Thread-3 Process: com.example.janome.color2, PID: 15086 CvException [org.opencv.core.CvException: cv::Exception: /build/master_pack-android/opencv/modules/imgproc/src/color.cpp:9825: error: (-215) scn == 3 && (dcn == 3 || dcn == 4) && (depth == CV_8U || depth == CV_32F) in function void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int) ] at org.opencv.imgproc.Imgproc.cvtColor_1(Native Method) at org.opencv.imgproc.Imgproc.cvtColor(Imgproc.java:1778) at com.example.janome.color2.MainActivity.onCameraFrame(MainActivity.java:155) at org.opencv.android.CameraBridgeViewBase$CvCameraViewListenerAdapter.onCameraFrame(CameraBridgeViewBase.java:163) at org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:399) at org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:352) at java.lang.Thread.run(Thread.java:776)
###補足情報(言語/FW/ツール等のバージョンなど)
androidstudio 2.3.1
java
OpenCV 3.0.0
回答2件
あなたの回答
tips
プレビュー