概述
问题一:无法读取头文件,链接器连接错了,应该是opencv_world454d.lib
问题二:图片无法显示。第一个原因是直接复制了地址,D:opencv2,正确的是D:/opencv/2
第二个原因是没有写图片名称和图片类型,所以最后正确的是D:/opencv/2/a.jpg
问题三:图片一闪而过。原因在于waitKey();
如果写为waitKey(10); 代表的意思是图片显示10毫秒,然后继续执行下面的语句。
如果写为waitKey(0); 代表程序执行到这句话停止。
代码:
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("D:/opencv/2/a.jpg"); //把图像保存到src里
imshow("input", src); //imshow 将图片读取出来,“input”为窗口名称
waitKey(0);
return 0;
}
笔记:
1.imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称 第二个参数,表示加载的图像是什么类型。(Mat一般为二维的数组)
支持常见的三个参数值:
IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变(一般默认为加载原图)
IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来
IMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("D:/opencv/2/a.jpg",IMREAD_GRAYSCALE);//把图片显示为灰度照片
imshow("input", src);
waitKey(0);
return 0;
}
2.
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("D:/opencv/2/a.jpg",IMREAD_GRAYSCALE);//输出灰度
if (src.empty())
{
printf("could not load image...n");
return 0;
} //如果是空白的(为空)输出...
namedWindow("input", WINDOW_FREERATIO);
//一张图片如果过大,没有办法完全显示出来
//上面这句话就可以解决
imshow("input", src);
waitKey(0);
//destoryAllWindows();对前面创建的所以项目清空
//上面这句话,我会报错,但写不写目前并不会影响程序的运行
return 0;
}
namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它。 常见用法namedWindow("Window Title", WINDOW_AUTOSIZE)
WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
WINDOW_FREERATIO会自动根据图像大小,显示窗口大小。两者有什么区别不清楚。
WINDOW_NORMAL,跟QT集成的时候会使用,允许修改窗口大小。
imshow根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口名称,第二参数是Mat对象
最后
以上就是细心爆米花为你收集整理的笔记:OpenCV4.5.4 【c++】图像读取与显示的全部内容,希望文章能够帮你解决笔记:OpenCV4.5.4 【c++】图像读取与显示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复