【发布时间】:2013-06-04 12:47:10
【问题描述】:
我调用函数 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)
有人可以帮帮我吗?我是新手,正在学习所有这些东西。 谢谢!
【问题讨论】:
-
什么不起作用?您能否提供错误消息或预期/实际输出?
-
@JBL 请检查 EDIT_2 是否有错误
-
@JBL 是行:“ temp_rgb = *itr ”对吗?我也试过 *itr.copyTo(temp_rgb) 不起作用...
标签: c++ opencv image-processing computer-vision