LKS*_*LKS 7 c++ opencv image-processing
以下代码将发布错误消息:
// object is a color image with type cv::Mat
IplImage* temp_object = &(IplImage)object;
IplImage* ipl_object = cvCreateImage(cvGetSize(temp_object), 8, 3);
assert(temp_object->nChannels == 3 && temp_object->depth == IPL_DEPTH_8U);
assert(ipl_object->nChannels == 3 && ipl_object->depth == IPL_DEPTH_8U);
cvCvtColor(ipl_object, temp_object, CV_BGR2GRAY);
Run Code Online (Sandbox Code Playgroud)
错误
OpenCV错误:cvCvtColor中的断言失败(dst.data == dst0.data),文件/ opt/local /var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_opencv/opencv/work/OpenCV-2.3.1/modules/imgproc/ src/color.cpp,第3175行终止,称为抛出异常
修改后的更新代码(现在应该可以使用).谢谢您的帮助!
IplImage temp_object (object);
IplImage* ipl_object = cvCreateImage(cvGetSize(&temp_object), 8, 1);
cvCvtColor(&temp_object, ipl_object, CV_BGR2GRAY);
Run Code Online (Sandbox Code Playgroud)
IplImage* temp_object = &(IplImage)object;
Run Code Online (Sandbox Code Playgroud)
这并没有给你一个指针object,重新解释为IplImage; 相反,它创建一个临时IplImage的object,给你一个指针,然后销毁临时,留下temp_object指向无效.temp_object之后使用将给出未定义的行为.
我不熟悉这个库,但也许你想要一个指针object(如果IplImage是任何类型的子类型object):
IplImage* temp_object = static_cast<IplImage *>(&object);
Run Code Online (Sandbox Code Playgroud)
使用强制转换转换指针(或引用,如果您愿意),而不是对象本身.
或许你想要一个新的(非临时的)对象:
IplImage temp_object(object);
Run Code Online (Sandbox Code Playgroud)