質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

6572閲覧

HSV画像を二値化してRGB画像にする方法

mad

総合スコア17

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/02/11 04:35

画像の特定の色を二値化する処理をおこなっているのですが、うまくいかないので質問します。

まず、RGBで確保している元画像をHSV画像に変換します。
Imgproc.cvtColor(mrgb, mask, Imgproc.COLOR_RGB2HSV);

次にそれを予め設定した上限値と下限値の範囲内とそれ以外にわけて二値化します。
Core.inRange(mask, lowerb, upperb, mask);

ここまではエラーが出ることなく二値化画像を表示できます。
しかし,この二値化した画像をRGBの画像に戻す以下の処理を実行するとエラーが出ます。
Imgproc.cvtColor(mask, mask, Imgproc.COLOR_HSV2RGB);

ログを見ると以下のエラーが出ています。
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 /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/imgproc/src/color.cpp, line 4042

チャンネル数の設定がおかしいのでしょうか?変換で使用した変数の設定は以下のようにしています。
mrgb = new Mat (width, height, CvType.CV_8UC3);
mask = new Mat (mrgb.size(), CvType.CV_8UC3);

具体的な解決策を教えていただけると助かります。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

OpenCVのマスク画像は8ビットのシングル・チャンネルです。0と255だけのグレイ・スケール画像です。
元のmaskが8ビット3チャンネルでもinRangeが8ビットのシングル・チャンネルへ変換していると思います。
グレイ・スケール画像は既にHSVではありませんから、cvtColorのGRAY2RGBで変換すれば良いように思います。(実際にやったことはないので、間違っていたらごめんなさい。)

投稿2016/02/11 05:43

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mad

2016/02/11 11:20

教えていただいたとおりグレイスケールからRGBに変換することでうまくいきました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問