关于#c++#的问题,如何解决?


#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的异常。可能原因包括文件不存在、文件路径错误或无法正确解码。我们可以尝试以下解决方案:

  1. 检查文件路径是否正确,确保视频文件存在。
  2. 尝试使用其他视频文件来测试程序,看是否出现同样的问题。
  3. 确保OpenCV版本正确,并且包含视频解码的相关库。
  4. 尝试使用其他视频解码库,比如FFmpeg或GStreamer。
  5. 检查电脑上的视频解码器是否正常工作。

建议先从检查文件路径开始尝试,如果问题依旧出现,再一步步排查。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个异常是由于test1没有成功加载图片引起的,可以检查以下几个方面:

  1. 检查图片路径是否正确,确保图片可以被正确读取。
  2. 检查OpenCV是否正确安装和配置,可以尝试重新安装OpenCV并确保配置正确。
  3. 检查图片格式是否被支持,尝试使用其他格式的图片进行测试。

另外,建议在代码中添加异常处理语句,以便更好地捕获和处理异常,例如:

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函数没有成功地完成了其工作,导致程序崩溃。为了解决这个问题,可以尝试以下几个步骤:

  1. 检查OpenCV库是否正确安装并配置:请确保您已在项目中正确地链接了OpenCV库,并且已经正确地配置了工作环境。您可以参考OpenCV的官方文档进行安装和配置。

  2. 检查代码中的OpenCV函数是否正确使用:请检查您的代码中的OpenCV函数,确保函数参数的正确性和完整性,以防出现空指针或未定义的图像等不合理现象。

  3. 检查程序是否使用了不合理的资源:OpenCV库是一个庞大的库,它可能会占用大量的内存和计算资源。如果您的程序在处理图像时使用了过多的内存或计算资源,可能会导致程序崩溃。请尝试修改代码,尽量避免资源过度占用的情况。

  4. 尝试捕获异常:您可以在代码中设置异常处理程序,以捕获OpenCV函数可能抛出的异常,并尝试以更友好的方式处理这些异常。

最后,我建议您参考以下资源,以获取更详细和深入的解决方案:

  1. OpenCV官方网站:https://opencv.org/
  2. OpenCV文档:https://docs.opencv.org/
  3. C++ 异常处理:https://en.cppreference.com/w/cpp/error/exception
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^