如何使用 OpenCV 降低图像的每像素位数

Posted

技术标签:

【中文标题】如何使用 OpenCV 降低图像的每像素位数【英文标题】:How can I lower the bit per pixel of image with OpenCV 【发布时间】:2019-02-22 08:47:11 【问题描述】:

我需要一张 8 BPP(每像素位)的图像来学习使用张量流进行图像分割。

以下是我的简短代码。

Mat Image;
Image = imread("Input.png",IMREAD_UNCHANGED);

** image synthesis process **

imwrite("C:\\Output.png", Image);

如果您对我的完整源代码感到好奇,可以查看我之前询问的内容。

如果我在这种状态下检查图像输出的bpp,它是24。

我该怎么办?

为了您的信息,我尝试过像 CV_8UC1 那样进行更正,但它似乎效果不佳。

【问题讨论】:

如果您的输出图像应该是彩色和 8 位的,那几乎可以肯定意味着您想要创建一个索引图像,也就是调色板图像。我在这里展示如何做到这一点...***.com/a/54906864/2836621 【参考方案1】:

您可能正在读取彩色图像,其中每个像素的红色、绿色和蓝色分量具有三个字节。

如果只需要 8 位图像,可以使用单色分量。

如果需要对输入图像进行合理的操作,先convert it to grayscale:

cvtColor(src, bwsrc, cv::COLOR_RGB2GRAY);

【讨论】:

谢谢你的回答,但我不擅长提问。我想要一个 8 位的 rgb 图像。我应该输入什么作为参数? 24 位 rgb 图像 -> 8bit rgb 图像 @HanSeobKim 如果要将 24 位 RGB 图像转换为 8 位 RGB 图像,请检查:***.com/a/7657742/7514664【参考方案2】:

不是以默认格式读取图像,而是以灰度格式读取图像。

Mat Image;
Image = imread("Input.png",IMREAD_GRAYSCALE);

** image synthesis process **

imwrite("C:\\Output.png", Image);

您可以查看此链接以获取有关 OpenCV 图像格式的详细信息:https://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html

【讨论】:

以上是关于如何使用 OpenCV 降低图像的每像素位数的主要内容,如果未能解决你的问题,请参考以下文章

openmv读取像素慢如何解决

OpenCV空间滤波

Qt 5.3 下OpenCV 2.4.11 开发图像处理基本概念

如何在不使用 cv2.warpAffine() 的情况下翻译图像? [Python 3 和 OpenCV 4.1]

使用OpenCV如何获取图像每个像素的灰度值??

opencv如何计算图像中物体的像素值