1. ホーム
  2. c++

[解決済み] openCVで特定のピクセルのRGB値にアクセスする

2023-06-29 03:34:28

質問

インターネットやstackoverflowで検索してみましたが、答えが見つかりませんでした。

OpenCVで特定の(x,y座標で与えられる)ピクセルのRGB値を取得/設定(両方)するにはどうしたらよいでしょうか?重要なことは,私は C++ で書いていて,画像は cv::Mat 変数に保存されているということです.IplImage() 演算子があることは知っていますが,IplImage はあまり快適ではありません - 私の知る限り,それは C API から来たものです.

はい、私はすでにこれがあったことを認識しています ピクセルへのアクセスは、OpenCV 2.2 では スレッドがあったことは知っていますが、それは黒と白のビットマップについてのみでした。

EDITです。

ご回答ありがとうございました。ピクセルのRGB値を取得/設定する方法はたくさんあるのですね。私は親しい友人からもう1つのアイデアを得ました-Bennyに感謝します! これはとてもシンプルで効果的です。どれを選択するかは好みの問題だと思います。

Mat image;

(...)

Point3_<uchar>* p = image.ptr<Point3_<uchar> >(y,x);

で、RGB値の読み書きができる。

p->x //B
p->y //G
p->z //R

どのように解決するのですか?

以下を試してみてください。

cv::Mat image = ...do some stuff...;

image.at<cv::Vec3b>(y,x); は、RGB(BGRと表記されることもあります)ベクトルで、型は cv::Vec3b

image.at<cv::Vec3b>(y,x)[0] = newval[0];
image.at<cv::Vec3b>(y,x)[1] = newval[1];
image.at<cv::Vec3b>(y,x)[2] = newval[2];