C++ cvtColor断言失败(带有C+;+;)的OpenCV)

C++ cvtColor断言失败(带有C+;+;)的OpenCV),c++,opencv,C++,Opencv,我有一个 cv::Mat image; 对象,我从一个文件中加载了一个图像到该对象,它正确地读取了它 现在我已经编写了一个函数,将其转换为灰色 cv::cvtColor(image, image, CV_RGB2GRAY); 这个错误出现了: OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /build/buildd/opencv-2.3.1/modules/imgproc/src/color.c

我有一个

cv::Mat image;
对象,我从一个文件中加载了一个图像到该对象,它正确地读取了它

现在我已经编写了一个函数,将其转换为灰色

cv::cvtColor(image, image, CV_RGB2GRAY);
这个错误出现了:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /build/buildd/opencv-2.3.1/modules/imgproc/src/color.cpp, line 2834
terminate called after throwing an instance of 'cv::Exception'
  what():  /build/buildd/opencv-2.3.1/modules/imgproc/src/color.cpp:2834: error: (-215) scn == 3 || scn == 4 in function cvtColor
有什么问题吗

这是我读取图像的方式(通过一个imagehandler类,该类有一个成员cv::Mat m_image)

imagehandler::imagehandler(常量std::字符串和文件名)
:m_图像(imread(文件名、CV_加载_图像_颜色))
{
如果(!m_image.data)
{

cout尝试使用不同的dst图像:

cv::Mat grayImage;
cv::cvtColor(image, grayImage, CV_RGB2GRAY);
如果(!image.empty()),请尝试使用image.clone()处理图像{
if(!image.empty()) {
    //your_code
} else
    std::cout<<"Emty "
//你的密码 }否则
std::Coutar你确定你将
图像
作为彩色图像阅读吗?检查。你如何在代码中阅读你的图像?我确实将其作为彩色图像阅读。检查我如何阅读的主要帖子。主要帖子是什么意思?你说你从文件中加载图像,但没有显示如何加载图像的代码。请在问题中再次检查!我编辑了我T和输入我如何在构造函数中读取它。错误已经消失了,但是现在我有一个问题,我不能复制这个新的图像到某个图像。编辑我的问题通常避免代码唯一的答案。考虑添加<代码>描述< /代码>,这有助于解释你的代码。谢谢。
if(!image.empty()) {
    //your_code
} else
    std::cout<<"Emty "