gpt4 book ai didi

java - 为什么我的 get() 方法无法实现此功能?

转载 作者:行者123 更新时间:2023-12-01 11:57:02 25 4
gpt4 key购买 nike

我目前正在编写一段代码,使用 OpenCV 将图像转换为灰度。我已经成功地使用以下代码将图像变成黑白的:

 public static void Greyscale() {

Mat inputImage = Highgui.imread("files/lena.png");
Mat greyImage = new Mat();
Imshow ims4 = new Imshow("Grey Image");
Imgproc.cvtColor(inputImage, greyImage, Imgproc.COLOR_BGR2GRAY);

ims4.showImage(greyImage);

但是,我现在想对某些特定像素运行 get() 方法,以确保所有 BGR 值都相等。但是,这不起作用:

double[] bgr = greyImage.get(0, 0);
System.out.println( "colour @ (0,0) = B: " + bgr[0] + " G: " + bgr[1] + " R: " + bgr[2]);

运行上面的代码会导致错误消息,例如“Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 1 在 ColourQuery.Greyscale(ColourQuery.java:129) 在 ColourQuery.main(ColourQuery.java:67)"

谁能指出我这段代码哪里出了问题?当图像不是灰度时,它适用于图像......

最佳答案

并非所有图像都具有相同数量的 channel ,也许您需要一个条件:

double[] pixel = img.get(0, 0);
switch( img.channels() ) {
case 1: // grayscale, luminance only
System.out.println( "colour @ (0,0) = L: " + pixel[0]);
break;
case 3: // bgr
System.out.println( "colour @ (0,0) = B: " + pixel[0] + " G: " + pixel[1] + " R: " + pixel[3]);
break;
case 4: // bgra
System.out.println( "colour @ (0,0) = B: " + pixel[0] + " G: " + pixel[1] + " R: " + pixel[3]+ " A: " + pixel[3]);
break;
}

关于java - 为什么我的 get() 方法无法实现此功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28372068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com