関数 rgbTOgray を呼び出し、for ループを使用して一時的な cv::Mat に「画像のベクトル」(色付きの画像のベクトル) 内の各画像をコピーしようとしています。そして、cvtColor を使用してグレースケールに変換します。コードは次のとおりです。
std::vector<cv::Mat> rgbTOgray(std::vector<cv::Mat>& rgb_image)
{
cv::Mat temp_gray, temp_rgb;
std::vector<cv::Mat> gray_image;
std::vector<cv::Mat>::iterator itr;
for ( itr = rgb_image.begin() ; itr < rgb_image.end() ; itr++)
{
temp_rgb = *itr;
cvtColor(temp_rgb, temp_gray, CV_RGB2GRAY);
gray_image.push_back(temp_gray);
}
return gray_image;
}
編集:グレースケール画像「gray_image」のベクトルを返しています。しかし、これはうまくいかないようです。
EDIT_2: OpenCV エラー: cvtColor でアサーションが失敗しました (scn == 3 || scn == 4)
誰か助けてくれませんか?私は新しく、このすべてのことを学んでいます。ありがとう!