标签: grayscale

3
推荐指数
1
解决办法
1万
查看次数

Scipy:将RGB TIFF转换为灰度TIFF并在Matplotlib上输出

我想在TIFF文件中操作RGB波段并在matplotlib上输出灰度图.到目前为止,我有这个代码,但我无法在灰度上得到它:

import scipy as N
import gdal
import sys
import matplotlib.pyplot as pyplot

tif = gdal.Open('filename.tif')

band1 = tif.GetRasterBand(1)
band2 = tif.GetRasterBand(2)
band3 = tif.GetRasterBand(3)


red = band1.ReadAsArray()
green = band2.ReadAsArray()
blue = band3.ReadAsArray()

gray = (0.299*red + 0.587*green + 0.114*blue)

pyplot.figure()
pyplot.imshow(gray)
pylab.show()
Run Code Online (Sandbox Code Playgroud)

这些是数组:

[[255 255 255 ..., 237 237 251]
 [255 255 255 ..., 237 237 251]
 [255 255 255 ..., 237 237 251]
 ..., 
 [237 237 237 ..., 237 237 251]
 [237 237 …
Run Code Online (Sandbox Code Playgroud)

python rgb matplotlib grayscale

3
推荐指数
1
解决办法
4151
查看次数

android中的灰度位图

我有一个对应于“灰度位图”(一个字节-> 一个像素)的字节数组,我需要为此图像创建一个 PNG 文件。

下面的方法有效,但创建的 png 很大,因为我使用的位图是 ARGB_8888 位图,每个像素需要 4 个字节而不是 1 个字节。

我无法让它与 ARGB_8888 不同的其他 Bitmap.Config 一起工作。也许 ALPHA_8 是我需要的,但我一直无法让它工作。

我也尝试过其他一些帖子中包含的 toGrayScale 方法(在 Android 中将位图转换为灰度),但我对大小有同样的问题。

public static boolean createPNGFromGrayScaledBytes(ByteBuffer grayBytes, int width,
        int height,File pngFile) throws IOException{

    if (grayBytes.remaining()!=width*height){
        Logger.error(Tag, "Unexpected error: size mismatch [remaining:"+grayBytes.remaining()+"][width:"+width+"][height:"+height+"]", null);
        return false;
    }
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    // for each byte, I set it in three color channels.
    int gray,color;
    int x=0,y=0;        
    while(grayBytes.remaining()>0){

        gray = grayBytes.get();
        // integer may be …
Run Code Online (Sandbox Code Playgroud)

android image bitmap image-processing grayscale

3
推荐指数
1
解决办法
5274
查看次数

打开 CV - Python RGB 到 GRAY 转换器

我想在没有任何内置 Open-CV 函数的情况下将此 RGB 编码为灰度转换器。这是我的代码的样子

import cv2 , numpy
def GrayConvertor(img):


    rows , cols , layers = img.shape

    matrix = numpy.zeros((rows , cols))

    for i in range(rows):
        for j in range(cols):
            val = 0.114 * (img[i][j][0]) + 0.587 * (img[i][j][1]) + 0.299 * (img[i][j][2])
            fraction = val - int(val)
            if fraction >= 0.5:
                matrix[i][j] = (int(val) + 1) 

            else: 
                matrix[i][j] = int(val) 
    cv2.imshow("gray" , matrix)
    cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

但是它显示一个空白图像,有什么想法吗?

python opencv numpy computer-vision grayscale

3
推荐指数
1
解决办法
1636
查看次数

C++和OpenCV:问题将图像转换为灰度

这是我的代码.这很简单.

Mat image  = imread("filename.png");

imshow("image", image);
waitKey();

//Image looks great.

Mat image_gray;
image.convertTo(image_gray, CV_RGB2GRAY);

imshow("image", image_gray);
waitKey();
Run Code Online (Sandbox Code Playgroud)

但是当我调用该image.convertTo(image_gray, CV_RGB2GRAY);行时,我收到以下错误消息:

OpenCV Error: Assertion failed (func != 0) in unknown function, file ..\..\..\sr
c\opencv\modules\core\src\convert.cpp, line 1020
Run Code Online (Sandbox Code Playgroud)

使用OpenCV 2.4.3

c++ rgb opencv grayscale

3
推荐指数
1
解决办法
5672
查看次数

Jython 将图片转换为灰度然后取反

请耐心等待,我几周前才开始使用 python。

我正在使用 JES。

我做了一个将图片转换为灰度的函数。我为每种颜色 r 和 r1、g 和 g1、b 和 b1 创建了两个名称。这背后的想法是将原始值保留在内存中,以便图片可以恢复为其原始颜色。

def grayScale(pic):
  for p in getPixels(pic):
    r = int(getRed(p))
    g = int(getGreen(p))
    b = int(getBlue(p))//I have tried this with and without the int()
    r1=r
    g1=g
    b1=b
    new = (r + g + b)/3
    color= makeColor(new,new,new)
    setColor(p, color)


def restoreColor(pic):
  for p in getPixels(pic):
    setColor (p, makeColor(r1,g1,b1))
Run Code Online (Sandbox Code Playgroud)

它不起作用。 The error: "local or global name could not be found."

我明白为什么我会收到这个错误。

但是,如果我尝试在 restoreColor 中定义它们,它将给出灰度值。

我明白为什么我会收到这个错误,但不知道如何格式化我的代码,以保存名称值。我查看了有关局部和全局变量/名称的问题;但我无法在我学到的基本语法中弄清楚如何做到这一点。

问题是:

如何创建名称并获取原始(红色、绿色、蓝色)的值,然后我可以在另一个函数中使用它们?我尝试过的一切都返回了更改后的(灰度)值。谢谢

python jython grayscale invert jes

3
推荐指数
1
解决办法
9982
查看次数

将 16 位单通道图像写入 Tiff

我正在尝试以 tiff 文件格式保存图像。我使用 libraw 从相机读取原始数据,它给了我未签名的短数据。我对数据做了一些操作,我想将结果保存为 Tiff 文件格式的 16 位灰度(1 通道)图像。但结果只是一个空白图像。即使我使用保留原始拜耳图像的缓冲区,它也不会正确保存。这是我用于保存的代码:

// Open the TIFF file
if((output_image = TIFFOpen("image.tiff", "w")) == NULL){
      std::cerr << "Unable to write tif file: " << "image.tiff" << std::endl;
}

TIFFSetField(output_image, TIFFTAG_IMAGEWIDTH, width());
TIFFSetField(output_image, TIFFTAG_IMAGELENGTH, height());
TIFFSetField(output_image, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(output_image, TIFFTAG_BITSPERSAMPLE, 16);
TIFFSetField(output_image, TIFFTAG_ROWSPERSTRIP, 1);
TIFFSetField(output_image, TIFFTAG_ORIENTATION, (int)ORIENTATION_TOPLEFT);
TIFFSetField(output_image, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField(output_image, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
TIFFSetField(output_image, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);


// Write the information to the file

tsize_t image_s;
 if( (image_s = TIFFWriteEncodedStrip(output_image, 0, &m_data_cropped[0], width()*height())) == -1)
 { …
Run Code Online (Sandbox Code Playgroud)

c++ file-io 16-bit grayscale libtiff

3
推荐指数
1
解决办法
5071
查看次数

如何在不失透明度的情况下将图像转换为灰度?

我在将带有透明像素的彩色图像转换为灰度时遇到问题.我在这个网站上搜索并发现了相关的问题,但我没有用来解决我的问题.

我已经定义了一个方法"convertType",如下所示:

/*------------------------------
attempts to convert the type of the image argument to the chosen type
for example: BufferedImage newImage= ImageUtilities.convertType(oldImage, BufferedImage.TYPE_3BYTE_BGR);
11/28/2013 WARNING-it remains to be seen how well this method will work for various type conversions
------------------------------*/
public static BufferedImage convertType (BufferedImage image,int newType){
 if (image.getType() == newType){
   return (image);
 }else {
    int w= image.getWidth();
    int h= image.getHeight ();
    BufferedImage modifiedImage = new BufferedImage( w,h,newType);
    Graphics2D g = ( Graphics2D)modifiedImage.getGraphics();
    g.drawImage( image, null, 0,0);
    g.dispose();
    return (modifiedImage);
} …
Run Code Online (Sandbox Code Playgroud)

java bufferedimage image grayscale

3
推荐指数
3
解决办法
2466
查看次数

Java ImageIO灰度PNG问题

我有一个灰度图像(实际上是"lena")我想试验一下.我把它作为512x512 PNG文件,有216种灰度.

当我用Java ImageIO阅读它时,会发生什么:

    String name = args[0];
    File fi = new File(name);
    BufferedImage img = ImageIO.read(fi);
Run Code Online (Sandbox Code Playgroud)

我得到一个只有154种颜色的BufferedImage !我只是意识到这一点,导致我处理过的图像显得粗糙,缺乏深黑色.

更刺激的是,当我使用XnView将PNG转换为GIF时,在这种情况下这是一个无损程序,用上面的代码读取GIF,我在BufferedImage中得到所有216种颜色.

是否有某种文档或描述,当我的PNG读取它时会发生什么?有设置来解决这个问题吗?我在最近的JDK1.8上做过这些实验.只是我对Java PNG支持的信任现在已经丢失,我稍后会使用彩色PNG.

java png grayscale javax.imageio

3
推荐指数
1
解决办法
1381
查看次数

Pytorch:加载灰度图像数据集

我想加载灰度图像的数据集。我使用过ImageFolder,但默认情况下不会加载灰色图像,因为它将图像转换为 RGB。

我找到了使用 ImageFolder 加载图像并在灰度转换图像后使用的解决方案:

transforms.Grayscale(num_output_channels=1)
Run Code Online (Sandbox Code Playgroud)

或者

ImageOps.grayscale(image)
Run Code Online (Sandbox Code Playgroud)

这是对的吗?如何在不进行转换的情况下加载灰度图像?我尝试了ImageDataBunch,但导入时遇到问题fastai.vision

image dataset grayscale pytorch

3
推荐指数
1
解决办法
9172
查看次数