其他分享
首页 > 其他分享> > OpenCV 读取一张图片并显示出来

OpenCV 读取一张图片并显示出来

作者:互联网

学习内容

利用OpenCV 读取一张本地图片并显示出来。

简要说明

这是学习OpenCV的一个必备知识,我的学习宗旨是:知道如何去用,才会去了解

代码演示

这是一个演示基础框架

#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{


	return 0;
}

开始写读取代码

#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{
	cv::Mat src = cv::imread("D:\\workspace\\opencv\\project\\test.png");
	if (!src.data)
	{
		std::cout << "读取图片失败!" << std::endl;
		return -1;
	}
	else 
	{
		std::cout << "读取图片成功!" << std::endl;
	}

	return 0;
}

输入
在这里插入图片描述
有时候读取图片失败,首先找是否路径错误等问题,例如写成路径是\

#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{
	cv::Mat src = cv::imread("D:\workspace\opencv\project\test.png");
	if (!src.data)
	{
		std::cout << "读取图片失败!" << std::endl;
		return -1;
	}
	else 
	{
		std::cout << "读取图片成功!" << std::endl;
	}

	return 0;
}

输出
在这里插入图片描述

但是,这样子时候是正确的

#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{
	cv::Mat src = cv::imread("D:/workspace/opencv/project/test.png");
	if (!src.data)
	{
		std::cout << "读取图片失败!" << std::endl;
		return -1;
	}
	else 
	{
		std::cout << "读取图片成功!" << std::endl;
	}

	return 0;
}

输出
在这里插入图片描述
还有 这种也是可能正确

#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{
	cv::Mat src = cv::imread("D://workspace//opencv//project//test.png");
	if (!src.data)
	{
		std::cout << "读取图片失败!" << std::endl;
		return -1;
	}
	else 
	{
		std::cout << "读取图片成功!" << std::endl;
	}

	return 0;
}

输出
在这里插入图片描述

开始显示图片

#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{
	cv::Mat src = cv::imread("D://workspace//opencv//project//test.png");
	if (!src.data)
	{
		std::cout << "读取图片失败!" << std::endl;
		return -1;
	}
	else 
	{
		std::cout << "读取图片成功!" << std::endl;
	}

	cv::namedWindow("src", cv::WINDOW_NORMAL);
	cv::imshow("src", src);

	cv::waitKey(0);
	return 0;
}

输出一张图片
在这里插入图片描述

这样子也可以显示一张图

#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{
	cv::Mat src = cv::imread("D://workspace//opencv//project//test.png");
	if (!src.data)
	{
		std::cout << "读取图片失败!" << std::endl;
		return -1;
	}
	else 
	{
		std::cout << "读取图片成功!" << std::endl;
	}

	//cv::namedWindow("src", cv::WINDOW_NORMAL);
	cv::imshow("src", src);

	cv::waitKey(0);
	return 0;
}

输出
在这里插入图片描述
但,这样不能正常显示

#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{
	cv::Mat src = cv::imread("D://workspace//opencv//project//test.png");
	if (!src.data)
	{
		std::cout << "读取图片失败!" << std::endl;
		return -1;
	}
	else 
	{
		std::cout << "读取图片成功!" << std::endl;
	}

	//cv::namedWindow("src", cv::WINDOW_NORMAL);
	cv::imshow("src", src);

	//cv::waitKey(0);
	return 0;
}

输出:
图片一闪而过就消失了

完整代码
#include <iostream>
#include "opencv2/opencv.hpp"

int main(int argc, char **argv)
{
	cv::Mat src = cv::imread("D://workspace//opencv//project//test.png");
	if (!src.data)
	{
		std::cout << "读取图片失败!" << std::endl;
		return -1;
	}
	else 
	{
		std::cout << "读取图片成功!" << std::endl;
	}

	cv::namedWindow("src", cv::WINDOW_NORMAL);
	cv::imshow("src", src);
	cv::waitKey(0);

	return 0;
}

输出:
在这里插入图片描述

总结

最容易犯错的地方就是图片的路径。
还有一种错误就是,明明路径都是对的,图片的真是存在,就是无法读取到图片,这种错误可能就出现在配置上问题了,解决方式是把配置OpenCV时的不带d的库不要进行配置或者删掉,保存并重新编译即可。
在这里插入图片描述

标签:src,读取,opencv,int,opencv2,OpenCV,include,cv,图片
来源: https://www.cnblogs.com/lvvou/p/14974755.html