- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
您好,我对 Libtiff 和图像处理还很陌生,当我尝试使用 Bitmiracle 的 Libtiff.net 时遇到了一个问题。
我有一些 OJPEG TIFF 图像,想将它们转换成现在的 JPEG TIFF。我通过将源转换为 BMP 然后另存为 TIFF(压缩:JPEG;光度:RGB)来实现这一点,但图像的尺寸非常大。所以我想如果我可以用 YCbCr 的光度来压缩它们,这样可以减少很多尺寸。
但是,当我将光度从 RGB 更改为 YCbCr 时,程序无法正常工作:输出只有 8 个字节(输入约为 400kb)。以TXT格式打开图片时,显示:
“二*”
我使用的代码是:
byte[] raster1 = getImageRasterBytes(inputbmp[0], PixelFormat.Format24bppRgb);
tif1.SetField(TiffTag.IMAGEWIDTH, inputbmp[0].Width);
tif1.SetField(TiffTag.IMAGELENGTH, inputbmp[0].Height);
tif1.SetField(TiffTag.COMPRESSION, Compression.JPEG);
tif1.SetField(TiffTag.PHOTOMETRIC, Photometric.YCBCR);
tif1.SetField(TiffTag.ROWSPERSTRIP, inputbmp[0].Height);
//tif1.SetField(TiffTag.JPEGQUALITY, confidence);
tif1.SetField(TiffTag.XRESOLUTION, 200);
tif1.SetField(TiffTag.YRESOLUTION, 200);
tif1.SetField(TiffTag.BITSPERSAMPLE,8);
tif1.SetField(TiffTag.SAMPLESPERPIXEL, 3);
int stride = raster1.Length / inputbmp[0].Height;
convertSamples(raster1, inputbmp[0].Width, inputbmp[0].Height);
for (int i = 0, offset = 0; i < inputbmp[0].Height; i++)
{
tif1.WriteScanline(raster1, offset, i, 0);
offset += stride;
}
我不太确定 WriteScanline 是否可以处理 YCbCr 输出,如果有其他方法,那也很酷。
谢谢你的帮助!
最佳答案
输出图像明显损坏。它通常在发生某些 fatal error 时发生。在这种情况下,库应该将警告和错误输出到控制台。
请调查警告和错误。他们可能会给你答案。
根据经验,我认为您可能为 ROWSPERSTRIP 标记提供了错误的值。该值应为 8 的倍数。
关于C# - 我可以使用 Libtiff 输出 Tiff 编码的 JPEG(在 YCbCr 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19219651/
我正在寻找将具有 444 YCbCr 的 JPEG 转换为 422 YCbCr 的可能性。根据 RFC 2435 for RTP Streaming,JPEG 文件必须具有 JPEG 422 YCbC
我目前正在从事一个涉及色彩空间的项目。我不太明白 Cb 和 Cr 在 YCbCr 颜色空间中的含义。维基百科说“蓝差和红差色度分量”,但我不明白它们的意思。 YCbCr 在图像处理方面比 RGB 或
我正在尝试从处于 Ycbcr 颜色模式的帧中获取像素的 Y 值。这是我写的: cv::Mat frame, Ycbcrframe, helpframe; ........ cvtColor(fra
尝试在 YCbCr 模式下创建 PIL 镜像甚至会在我的 ubuntu 11.04 中从 synaptic 安装新的 python/PIL 时崩溃 wim@wim-ubuntu:~$ python P
我正在使用 OpenCV 从多个摄像头捕获实时数据: capture = cvCaptureFromCAM(cameraNo) 现在,我需要将图像转换为 YCbCr 色彩空间。我意识到我可以使用 cv
我正在尝试将图像从 RBG(OpenCV 中的 BGR)手动转换为 YCbCr 色彩空间。 我的图像是一张 png 彩色图像,宽度为 800,高度为 600,3 个 channel ,16 位深度。
我正在使用 PIL 在 Python 中进行一些图像处理,我需要从一系列图像中提取亮度层,并使用 numpy 对其进行一些处理,然后将编辑后的亮度层放回图像中并保存.问题是,我似乎无法以 YCbCr
我一直在尝试在 Vulkan 中对 YCbCr 图像进行采样,但我一直得到不正确的结果,我希望有人能够发现我的错误。 我有一个 NV12 YCbCr 图像,我想将它渲染到两个三角形上,形成一个四边形。
下面是一个将 RGB 转换为 YCbCr 的矩阵。你能告诉我如何获得将 YCbCr 转换为 RGB 的公式吗?我的意思是,我有可用的 YCbCr 值,我想从中获取 RGB。 最佳答案 如果您询问公式是
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我需要从 JPEG 图像中提取 CbCr 色度数据,用于图像分析。 (在 C/C++ 中) 据我了解,JPEG“原始数据”是经过压缩的 YCbCr。我的这个假设是否正确?如何针对给定图像验证这一点?
我正在尝试使用 python 进行 JPEG 压缩。我加载了一个 tiff 图像并将其存储为 numpy uint8 RGB 数组。我这样做是为了颜色映射。 def rgb2ycbcr(im):
我需要将 RGB 图像转换为 YCbCr 颜色空间,但有一些颜色偏移问题,我使用了所有公式并得到了相同的结果。 python 中的公式 cbcr[0] = int(0.299*rgb[0]
我有具有 YCbCr 色彩空间的图像。但我想让它们变成 CMYK。我怎么做? Perl 解决方案会很棒。命令行 (Ubuntu) 解决方案会很好。 我试过使用 ImageMagick,但我的图像大多是
如何将BitmapFactory.decodeFile()返回的Bitmap转成YUV格式(类似于相机的onPreviewFrame()返回字节数组)? 最佳答案 下面是一些实际工作的代码:
我在尝试使用一些不同的图像格式时遇到了一些我觉得很奇怪的事情。当从 RGB 转换为 YCbCr 然后再转换回 RGB 时,结果与我开始时的结果非常相似(像素值的差异几乎总是小于 4)。但是,当我从 Y
有一个来自 http://www.delphiffmpeg.com 的视频编码示例- 需要将一组TBitmaps转换成YCbCr(YUV),我们应该怎么做呢?该示例包含虚拟颜色: (* encod
在 OpenCV (Python) 中,要将 RGB 转换为 YCbCr,我们使用: imgYCC = cv2.cvtColor(img, cv2.COLOR_BGR2YCR_CB) 如果我想回到 R
我需要将加载到 BufferedImage 的位图中的颜色从 RGB 转换为 YCbCr(亮度和 2 channel 色度),并在处理后转换回来。 我在每个像素的主方法中使用像 rgb2ycbcr()
我有 8 位的 Y、Cb、Cr 值,你能给我简单的 C 函数,将它转换为 8 位的 R、G、B。 这是它的原型(prototype)。 void convertYCbCrToRGB( unsi
我是一名优秀的程序员,十分优秀!