因为工作需要,现在开始着手VS+opencv的学习,首先就是读片读取,发现按照以前MATLAB的写法会出现以下报错:
OpenCV(4.5.0) Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow,
搜到的解决方法一个是将图片放到代码路径下,但这个方法很麻烦;
第二个方法就是讲图片的绝对路径写出来,值得注意的是
MATLAB的路径读取是这样写的
Image=imread("D:\matlab\11.jpg");
但在vs环境下就会报错,改成这样就会运行正常了,也就是多写个\就可以。
Mat src = imread("D:\\matlab\\11.jpg");
cvtColor
色彩空间转换
共4个参数
第1个参数 输入
第2个参数 输出
第3个参数 色彩空间转换方式
第4个参数 通道数(不输入,则根据输入自动计算)
imwrite
图像保存
共3个参数
第1个参数 路径+文件名
第2个参数 输入
第3个参数 特定格式编码对(一般用不到)
//1.赋值——浅复制
Mat src = imread("……");
Mat m3 = src;
//2.克隆——深复制
Mat src = imread("……");
Mat m1 = src.clone();
//3.拷贝——深复制
Mat src = imread("……");
Mat m2;
src.copyTo(m2);
Mat image= imread("……");
//Mat对象存储的列数,行数,通道数(维度),位深度,图像类型很简单,通过这些操作即可
image.cols;
image.rows;
image.channels();
image.depth();
image.type();
VS在处理16位的图像时,直接进行读取会将图像解码成8位的图像,此时添加一个IMREAD_UNCHANGED即可解决该问题。
IMREAD_UNCHANGED是OpenCV中imread函数的一个读取标志。它用于读取图像时不进行任何修改或解码。具体来说,它将图像以原始格式加载到内存中,包括图像的通道数和深度。