用OpenCV读取图像并且显示
来源:互联网 发布:网络打印机ip地址查询 编辑:程序博客网 时间:2024/06/03 22:55
源引
今天早上在用opencv读取函数载入图片并且显示都出现了问题,自己搞了半天都没解决。最后参考官方Example解决了,并且仔细阅读了代码解释,将原因弄清楚了。
而图像(视频帧)的读取显示非常重要,所以在这里记录下来。
Windows + VS2013平台
#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace std;using namespace cv;int main(int argc, char** argv){ if (argc != 2) { cout << "Please input a image or video frame" << endl; return -1; } String input_file = argv[1]; Mat image = imread(input_file); if (!image.data) { cout << "Could not open or find the image" << endl; return -1; } namedWindow("Display window", WINDOW_NORMAL); imshow("Display window", image); waitKey(0); return 0;}
问题分析:
自己写代码的时候没有写边界检查,所以都不知道是文件目录没有读取到,还是显示的问题, 所以IO处理一定要进行边界检查。
这里主要的问题是waitKey()函数,我在Ubuntu下没有写这个函数,程序编译没问题,但是就是不显示图像,原因是用waitKey()去等待用户按某个键,图像就不显示了。如果不写,自然就看不到。
waitkey(0)代表永久等待,其中单位为milliseconds.
在Windows平台的展示是基于QT的,所以要想缩放图像大小,nameWindow()中的第二个参数要设置为WINDOW_NORMAL,才可以进行缩放操作。
namedWindow()函数这里是可选的,就是创建一个带有名字的窗口,如果不写这个函数,inshow()也会自己创建一个对应的窗口。但是inshow()可以指定到特定的窗口上显示图片数据。
这里有个问题未解决就是,VS为什么识别不了绝对路径
Ubuntu + Clion
#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace std;using namespace cv;int main(int argc, char** argv){ if (argc != 2) { cout << "Please input a image or video frame" << endl; return -1; } String input_file = argv[1]; Mat image = imread(input_file); if (image.empty()) { cout << "Could not open or find the image" << endl; return -1; } namedWindow("Display window"); imshow("Display window", image); waitKey(0); return 0;}
代码分析:
和Window平台下基本一致,不过这里nameWindow()第二个参数可以不用赋值,默认WINDOW_AUTOSIZE就可以缩放了。
##总结:
有问题多看官方用例和Demo,多积累基础工具。
##参考:
http://docs.opencv.org/2.4/doc/tutorials/introduction/display_image/display_image.html
- 用opencv读取图像,并且显示
- 用OpenCV读取图像并且显示
- Opencv 读取多幅图像,并且每3秒显示
- opencv调用是视频图像并且显示
- QT opencv 读取显示图像
- opencv读取、显示、保存图像
- OpenCV读取图像_显示图像和保存图像
- OpenCV读取图像_显示图像和保存图像
- OpenCV中图像的读取与显示
- OpenCV中图像的读取与显示
- OpenCV中读取,显示,保存图像
- opencv读取序列图像并显示
- Python OpenCV 读取并显示图像
- Qt对话框显示opencv读取的图像
- Opencv(1)---图像读取、显示、保存
- 【opencv】2.图像读取、显示、输出
- opencv 图像的读取显示和保存
- opencv 图像读取显示和像素操作
- Node.js核心模块
- uva 10340
- 04-树7 二叉搜索树的操作集 (30分)
- 对log工具类的方法封装
- 神奇的一句话引发的思考
- 用OpenCV读取图像并且显示
- java学习(15)
- 数据库中存储日期的字段类型到底应该用varchar还是datetime
- Leetcode 求买股票的最大盈利问题
- WannaCryptor 勒索蠕虫样本深度技术分析
- webpack代码部署index.html无内容显示
- orale 多行合并为一行
- Android 判断一个字符串是否含有中文
- 微信小程序点击添加移除class