我正在尝试模糊图像,高斯模糊图像但是当我运行代码时最终发生的一切都是图像打开而没有模糊。任何人都可以帮我解决这个问题吗?
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
int main() {
//read the image
cv::Mat image= cv::imread("Space_Nebula.jpg");
cv::Mat result;
// create image window
cv::namedWindow("My Image");
//display image
cv::imshow("My Image", image);
//wait key
cv::waitKey(50000);
//blur image
cv::blur(image,result,cv::Size(5,5));
cv::imshow("My Image", image);
//smooth image
cv::GaussianBlur(image,result,cv::Size(5,5),1.5);
cv::imshow("My Image", image);
return 1;
}
答案 0 :(得分:6)
有几件事:您正在将image
处理到名为result
的席子中,然后显示image
。此外,在最后两次调用imshow
后没有调用waitKey,因此您根本没有看到这些。还有一个小点:从main
返回0表示信号完成没有错误。试试这个:
//read the image
cv::Mat image= cv::imread("../../IMG_0080.JPG");
cv::Mat result;
// create image window
cv::namedWindow("My Image");
//display image
cv::imshow("My Image", image);
//wait key
cv::waitKey(0);
//blur image
cv::blur(image,result,cv::Size(5,5));
cv::imshow("My Image", result);
cv::waitKey(0);
//smooth image
cv::GaussianBlur(image,result,cv::Size(5,5),1.5);
cv::imshow("My Image", result);
cv::waitKey(0);
return 0;
答案 1 :(得分:1)
cv::imshow("My Image", result);
代替cv::imshow("My Image", image);
。