OpenCVを初めて使用しています。私はランダムなカラーイメージを作成しようとしています。最初に、ランダムなグレースケール画像を作成しようとしました。 Iが得られた出力はOpenCVでランダムカラー画像を作成する
ある
void random_colour(Mat input_image) {
for (int i = 0; i < image.rows; i++)
for (int j = 0; j < image.cols; j++)
image.at<uchar>(i,j)= rand()%255;
imwrite("output.tif",image);
}
int main(int argc, char** argv)
{
Mat img=Mat::zeros(100,100,CV_8UC1);
random_colour(img);
waitKey(0);
return 0;
}
下に取り付けられたコードは、今は、ランダムカラー画像を作成するために、私の上記のコードを変更しました。
void random_colour(Mat input_image) {
for (int i = 0; i < image.rows; i++)
{
for (int j = 0; j < image.cols; j++)
{
image.at<Vec3b>(i,j)[0] = rand()%255;
image.at<Vec3b>(i,j)[1] = rand()%255;
image.at<Vec3b>(i,j)[2] = rand()%255;
}
}
imwrite("output.tif",image);
}
主な機能は同じです。そうしている間、私はランタイムエラーが発生します。どうすればいいのか教えてください。色空間の各ピクセルに3つのコンポーネントRGBがあることを私が理解しています。したがって、私は各ピクセルの3つの要素すべてを変更しています。私は私が望むものを得ていない。
を使用してください/core/doc/operations_on_arrays.html#randu)?例えば'cv :: randu(image、0、256);' || 「主な機能は変わらない」 - その場合、1チャンネルの画像を作成し、それを3チャンネル画像のようにアクセスしようとします。 –
どのようなエラーが発生しますか?エラートレースを投稿してください。また、私が知っている限り、OpenCVは 'RGB'ではなく' BGR'値を扱いますので、注意してください。 – DarkCygnus