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 并且我自己工作正常:
我是 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 并且我自己工作正常: