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