C++ と OpenCV を使用して、画像内のピクセルの色を検出し、それがどの色範囲にあるかを判断し、それを一般的な色に置き換える関数を作成しています。たとえば、緑の範囲が濃い緑から明るい緑の場合、プログラムはまだ緑であると判断し、単純な緑に置き換えて、出力画像を非常に単純な外観にします。すべてが設定されていますが、各範囲の特性を定義するのに問題があり、BGR 値を指定してピクセルの全体的な色を決定できる式を誰かが知っているかどうか興味がありました。そうでない場合は、多くの実験を行って自分で作成する必要がありますが、何かが既に存在する場合は時間を節約できます. 私は多くの研究を行ってきましたが、これまでのところ何も見つかりませんでした。
7921 次
3 に答える
5
はい、おそらく「ピクセルの全体的な色」とは、色の「色相」または「彩度」のいずれかです。
したがって、RGB を HSV (色相、彩度、値) に変換する数式が必要な場合は、色相または彩度の値のみに関心があります。
参照: RGB を HSV に変換するアルゴリズムと HSV を RGB に変換するアルゴリズム (両方とも 0 ~ 255 の範囲)
編集:彩度を最大にしてからRGBに変換し、どの値が最も高いかを調べる必要がある場合があります(たとえば、(255,0,0)または(255,0,255)など.
于 2016-01-12T02:14:36.630 に答える
-2
すべてのピクセルの RGB 値にアクセスする場合、以下のコードは、
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat image = imread("image_path");
for(int row = 1; row < image.rows; row++)
{
for(int col = 1; col < image.cols; col++)
{
Vec3b rgb = image.at<Vec3b>(row, col);
}
}
}
于 2016-01-12T05:26:09.670 に答える