#include
#include
#include
#include
class MyClass
{
public:
MyClass();
void input() {
cv::namedWindow("test01", cv::WINDOW_AUTOSIZE);
cv::VideoCapture capture;
capture.open("C:\\Users\\wzy123456\\Desktop\\厉羽涵\\video_20220711_194359.mp4");
cv::Mat frame;
for (;;) {
capture >> frame;
if (frame.empty())break;
cv::imshow("test01", frame);
if (cv::waitKey(33) >= 0)break;
}
test1 = cv::imread("R - C.jpg");
}
void test01() {
cv::namedWindow("test02");
cv::copyMakeBorder(test1, test2, 500, 500, 500, 500, cv::BORDER_WRAP);
cv::imshow("test02", test2);
cv::waitKey(0);
cv::destroyWindow("test02");
}
~MyClass();
private:
cv::Mat test1;
cv::Mat test2;
};
MyClass::MyClass()
{
}
MyClass::~MyClass()
{
}
int main(void) {
MyClass t;
t.input();
t.test01();
}
0x00007FFFB54D40AC 处(位于 Project2.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000BA0E74E440 处。
参考GPT和自己的思路:
根据你提供的代码和错误信息,推测问题出在input()
函数中的视频文件无法正确读取,导致后面的函数出现OpenCV的异常。可能原因包括文件不存在、文件路径错误或无法正确解码。我们可以尝试以下解决方案:
建议先从检查文件路径开始尝试,如果问题依旧出现,再一步步排查。
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个异常是由于test1没有成功加载图片引起的,可以检查以下几个方面:
另外,建议在代码中添加异常处理语句,以便更好地捕获和处理异常,例如:
try {
test1 = cv::imread("R - C.jpg");
}
catch (cv::Exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
return -1;
}
这样可以在出现异常时输出错误信息并退出程序,方便排查问题。
capture.open("");打开路径不要有中文再试试
参考GPT和自己的思路:
根据您提供的代码片段和异常信息,我猜测出现了一个OpenCV库相关的异常。具体来说,可能是某个OpenCV函数没有成功地完成了其工作,导致程序崩溃。为了解决这个问题,可以尝试以下几个步骤:
检查OpenCV库是否正确安装并配置:请确保您已在项目中正确地链接了OpenCV库,并且已经正确地配置了工作环境。您可以参考OpenCV的官方文档进行安装和配置。
检查代码中的OpenCV函数是否正确使用:请检查您的代码中的OpenCV函数,确保函数参数的正确性和完整性,以防出现空指针或未定义的图像等不合理现象。
检查程序是否使用了不合理的资源:OpenCV库是一个庞大的库,它可能会占用大量的内存和计算资源。如果您的程序在处理图像时使用了过多的内存或计算资源,可能会导致程序崩溃。请尝试修改代码,尽量避免资源过度占用的情况。
尝试捕获异常:您可以在代码中设置异常处理程序,以捕获OpenCV函数可能抛出的异常,并尝试以更友好的方式处理这些异常。
最后,我建议您参考以下资源,以获取更详细和深入的解决方案: