在未知函数中断言失败
Assertion failed in unknown function
我正在使用这个程序来读取和显示图像。我不知道为什么显示这个奇怪的错误:
断言失败的
(scn==3 || scn ==4)
在未知的功能,文件......srcmodulesimgprocsrccolor.cpp行3326
我改变了一些图像,有时它运行没有错误,但是,即使当它运行和一切,它显示的窗口,但不是在它的图像。怎么了?
#include "stdafx.h"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
using namespace std;
void main()
{
Mat leftImg,frame=imread("C:\Users\user\Downloads\stereo_progress.png");
leftImg=imread("C:\Users\user\Downloads\dm_sl.gif");//add of left camera
cvtColor(leftImg,leftImg,CV_BGR2GRAY);
imwrite("imreadtest.txt",leftImg);
imshow("cskldnsl",leftImg);
getchar();
}
-
其他人回答,请确保cvtColor中的parameter1不是1通道图像。按类型()检查。应该是
CV_8UC3
等 -
把
waitKey
放在imshow
后面。 -
我不知道为什么你在imreadtest.txt中保存leftImg。[虽然它没有出错]
首先,通过测试leftImg.data != 0
来确保图像被正确加载。
然后,您可以通过将CV_LOAD_IMAGE_GRAYSCALE
或CV_LOAD_IMAGE_COLOR
作为第二个参数传递给cv::imread()
来强制通道数,以确保您加载灰度(1通道)或彩色(3通道)图像,无论图像文件的类型是什么
使用cvtColor()
时,不能对输入矩阵和输出矩阵使用相同的矩阵。如果您以后不需要彩色图像,传递一个副本是一个简单的解决方案:
cvtColor(leftImg.clone(), leftImg, CV_BGR2GRAY);
另一个解决方案是使用一个新的输出矩阵:
Mat leftImgGray;
cvtColor(leftImg, leftImgGray, CV_BGR2GRAY);
imshow("cskldnsl",leftImgGray);
相关文章:
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- uint_not_usable_without_attribute在业力规则中使用数字生成器时静态断言失败
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 在 CppUnit 中测试中止断言失败
- 使用扫描的调试断言失败
- 为什么我的Qt程序在断言失败后继续运行?
- 图片不显示,关闭时出错 --> 调试断言失败!表达式:is_block_type_valid(标头>_block_use)
- 访问提升:shared_ptr 主范围外崩溃,断言失败:px != 0.指针的正确用法是什么?
- C++ 调试断言失败 - 矢量下标超出视觉工作室的范围
- 错误:断言失败 (src.type() == CV_8UC1) 在阈值中
- Boost Beast 异步服务器失败,断言失败:(id_ != T::id) 在多个 aync 调用中
- 使用imwrite OpenCV时断言失败
- 调试断言失败的缓冲区!=nullptr
- 使用 ofstream 写入文本文件时断言失败
- 提升继续恢复断言失败
- 获取有关调试断言失败的错误:表达式:"(_Ptr_user &(_BIG_ALLOCATION_ALIGNMENT -1)) == 0" &&0
- OpenCV(3.4.1) 错误:断言失败(变暗 <= 2 && step[0] > 0) in cv::Mat::locateROI
- 在Win10上使用带有Qt5的OpenCV3.0,调试断言失败
- MFC GetDC() 断言失败 - "Not a window"
- OpenCV 错误:断言失败 - 矩阵减去