OpenCV图像读取和写入

opencv默认读入图像的数据类型为 uchar 一个字节。

利用OpenCV的 imwrite 函数 可以将 uchar 8位 和 uint6_t 16位数据保存在 jpg 或 png图像中。

CV_32F 数据可以保存为PFM,TIFF,OpenEXR和Radiance HDR格式

https://blog.csdn.net/mars_xiaolei/article/details/62233900

 

imwrite 可以定义数据的压缩等级, void imwrite(string filename, Mat src, compression_params )

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(0); // 无压缩png.默认压缩值为1

 

读入深度图像

imread(string filename, int flag);

默认读入数据类型为 uchar,3通道, flag为1 (IMREAD_COLOR)。

若想读入灰度图(单通道、uchar类型),那么 flag 可以设置为 0(IMREAD_GRAYSCALE)

对于CV_16U的数据类型,需要注明是读入任意深度数据,那么 flag 为2 (IMREAD_ANYDEPTH),此时还是三通道(每个通道均为相同的值)。

需要用 split 分离出单通道。

 

显示图像

imshow( string windowname, Mat src) 只能显示 uchar 类型的图像

对于 深度为 CV_16U 之类的数据需要先进行转换,否则会报错。

如下则可以:

cv::Mat temp;
src.convertTo(temp, CV_8UC1, 255.0 / 131071);
cv::equalizeHist(temp, temp); // 均衡化直方图,让图像看起来更明显
cv::imshow("image", temp);
cv::waitKey();

 

转载于:https://www.cnblogs.com/2Bthebest1/p/11275638.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值