Visual Studio C++ 中的 opencv 没有输出

No output from opencv in Visual Studio C++

我是 OpenCV 新手。此代码在我的 Visual Studio 2017 上运行,但即使在输入命令行参数后也不会显示任何结果。该程序运行良好并成功构建,没有错误或构建失败通知。我已经尝试了几次,但一直没有解决这个问题。请问有人可以帮忙吗?

 #include "opencv2/imgproc.hpp"
    #include "opencv2/imgcodecs.hpp"
    #include "opencv2/highgui.hpp"
    #include <iostream>

    using namespace std;
    using namespace cv;

    Mat src, erosion_dst, dilation_dst;
    int erosion_elem = 0;
    int erosion_size = 0;
    int dilation_elem = 0;
    int dilation_size = 0;
    int const max_elem = 2;
    int const max_kernel_size = 21;
    void Erosion(int, void*);
    void Dilation(int, void*);
    int main(int, char** argv)
    {
        src = imread(argv[1], IMREAD_COLOR);
        if (src.empty())
        {
            return -1;
        }
        namedWindow("Erosion Demo", WINDOW_AUTOSIZE);
        namedWindow("Dilation Demo", WINDOW_AUTOSIZE);
        moveWindow("Dilation Demo", src.cols, 0);
        createTrackbar("Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Erosion Demo",
            &erosion_elem, max_elem,
            Erosion);
        createTrackbar("Kernel size:\n 2n +1", "Erosion Demo",
            &erosion_size, max_kernel_size,
            Erosion);
        createTrackbar("Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Dilation Demo",
            &dilation_elem, max_elem,
            Dilation);
        createTrackbar("Kernel size:\n 2n +1", "Dilation Demo",
            &dilation_size, max_kernel_size,
            Dilation);
        Erosion(0, 0);
        Dilation(0, 0);
        waitKey(0);
        return 0;
    }
    void Erosion(int, void*)
    {
        int erosion_type = 0;
        if (erosion_elem == 0) { erosion_type = MORPH_RECT; }
        else if (erosion_elem == 1) { erosion_type = MORPH_CROSS; }
        else if (erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; }
        Mat element = getStructuringElement(erosion_type,
            Size(2 * erosion_size + 1, 2 * erosion_size + 1),
            Point(erosion_size, erosion_size));
        erode(src, erosion_dst, element);
        imshow("Erosion Demo", erosion_dst);
    }
    void Dilation(int, void*)
    {
        int dilation_type = 0;
        if (dilation_elem == 0) { dilation_type = MORPH_RECT; }
        else if (dilation_elem == 1) { dilation_type = MORPH_CROSS; }
        else if (dilation_elem == 2) { dilation_type = MORPH_ELLIPSE; }
        Mat element = getStructuringElement(dilation_type,
            Size(2 * dilation_size + 1, 2 * dilation_size + 1),
            Point(dilation_size, dilation_size));
        dilate(src, dilation_dst, element);
        imshow("Dilation Demo", dilation_dst);
    }

谢谢!

你的参数可能有问题...

尝试用

替换 src = imread(argv[1], IMREAD_COLOR);
src = imread("myPathTo/lena.jpg", IMREAD_COLOR);

我试过使用 lena 并且我自己工作正常: