首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV输出单色TIFF 4压缩

OpenCV输出单色TIFF 4压缩
EN

Stack Overflow用户
提问于 2022-04-18 11:55:09
回答 1查看 268关注 0票数 1

是否有一种方法输出单色TIFF文件在OpenCV与组4压缩?

这是使用imagemagick/graphicsmagick执行此操作的命令。

代码语言:javascript
复制
'gm convert '.$file.' -type bilevel -monochrome -compress group4 '.$output

OpenCV版本4.5.1

更新

代码语言:javascript
复制
# g++ -Wall -O3 -std=c++17 main.cpp -o main `pkg-config opencv4 --cflags --libs` -ltiff

find什么都不回

代码语言:javascript
复制
root@x:/usr/include/opencv4/opencv2# find . -name "*tif*"

代码

代码语言:javascript
复制
#include <tiffio.h>
#include <opencv4/opencv2/opencv.hpp>

std::vector<int> params = {cv::IMWRITE_TIFF_COMPRESSION, COMPRESSION_CCITTFAX4};
cv::imwrite(_output, src_bin, params);

错误

警告:0全局../模块/imgcodecs/src/grfmt_tiff.cpp (914) writeLibTiff OpenCV TIFF(第914行):TIFFSetField(tif,TIFFTAG_PREDICTOR,预测器) imwrite_('out.tif'):无法写入数据: OpenCV(4.5.1) ./模块/imgcodecs/src/grfmt_tiff.cpp:914:错误:(-2:未指定的错误) OpenCV TIFF: failed (tif,TIFFTAG_PREDICTOR,谓词)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-18 12:24:09

OpenCV使用libtiff (链接)。如果调用cv.imwrite (链接),则可以传递其他参数。

对于第4组压缩,文档表示必须传递IMWRITE_TIFF_COMPRESSION标志(链接)和值COMPRESSION_CCITTFAX4 (链接)。

示例:

代码语言:javascript
复制
#include <tiffio.h>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

vector<int> params = {IMWRITE_TIFF_COMPRESSION, COMPRESSION_CCITTFAX4};

bool success = imwrite("image.tif", img, params);

更新

好吧,它应该是这样运作的。但似乎opencv4目前在编写第4组TIFF时有一个或多个问题。顺便说一句,当您尝试python时,情况也是一样的。这个已知的问题处理一个由opencv错误添加的谓词标记。我将修复应用于本地构建,但在此之后,又出现了一个问题,即8位Mat转换为group4的1位/样例。所以我的建议是:

解决办法

相反,您可以使用GraphicsMagick API Magick++

代码语言:javascript
复制
#include <opencv2/opencv.hpp>
#include <Magick++.h>

using namespace cv;
using namespace Magick;

int main(int argc, char* argv[]) {
        InitializeMagick("");

        Mat img = imread("img.png");
        Image image(img.cols, img.rows, "BGR", CharPixel, (char *)img.data);
        image.compressType(CompressionType::Group4Compression);
        image.write("img.tif");
        return(0);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71911487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档