如何使用 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 降低图像的每像素位数的主要内容,如果未能解决你的问题,请参考以下文章
Qt 5.3 下OpenCV 2.4.11 开发图像处理基本概念