opencv读取jpeg压缩的tiff文件失败

yupeiwendy 2017-11-14 10:56:45
用的vs2013和opencv3.3,自己编译了源码,imread跟进去,tif->tif_decodestatus为0,于是返回了"Sorry, requested compression method is not configured"

查了下,应该是图像jpeg压缩过的问题,如果后缀是jpg的话,应该直接就转到jpg去解开了

那么现在后缀是tif,用opencv能解开吗?如果能,怎样修改下源码重新编译下?

这一块实在没有研究,只好厚颜上来求助,哪位大神有遇到过这种情况帮帮忙
...全文
570 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
andylan_zy 2018-07-10
  • 打赏
  • 举报
回复
请问GDAL的库是自己用cmake编译吗?
yupeiwendy 2017-11-27
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
使用Image Magick自带的convert.exe命令行工具将tiff文件先转为OpenCV能读取的图片格式。
命令行工具就算了,不管怎么样,谢谢赵老师。 这几天有空,找了下,GDAL可以满足我的要求,OPENCV3.x已经有整合了GDAL进去,但是不知道为什么还是读取失败,希望做最好能有哪路大神给指点下。 后来自己去GDAL官网找东西搞定了。另外网上搜索的例子各种老各种指针,最新版的GDAL2.2.3函数已经改成句柄。 贴一下最新的代码 GDALAllRegister(); CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO"); //中文必加 GDALDatasetH hDataSet; hDataSet = (GDALDatasetH)GDALOpen("C:\\xxx.tif", GA_ReadOnly); if (hDataSet == NULL){ AfxMessageBox(L"打开图片失败"); return; } int width = GDALGetRasterXSize(hDataSet); int height = GDALGetRasterYSize(hDataSet); int iBandCount = GDALGetRasterCount(hDataSet); vector<cv::Mat> v_mat; unsigned char *pBuf = new unsigned char[width*height]; for (int i = 0; i < iBandCount; i++){ GDALRasterBandH hBand = GDALGetRasterBand(hDataSet, i + 1); GDALRasterIO(hBand, GF_Read, 0, 0, width, height, pBuf, width, height, GDT_Byte, 0, 0); cv::Mat tempMat(height, width, CV_8UC1, pBuf); v_mat.push_back(tempMat.clone()); } delete pBuf; pBuf = NULL; cv::Mat imgDst;// (height, width, CV_8UC(iBandCount)); cv::merge(v_mat, imgDst); 结贴!
赵4老师 2017-11-14
  • 打赏
  • 举报
回复
使用Image Magick自带的convert.exe命令行工具将tiff文件先转为OpenCV能读取的图片格式。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧