首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse中的red()、green()、blue()方法

Eclipse中的red()、green()、blue()方法
EN

Stack Overflow用户
提问于 2014-05-06 17:18:15
回答 1查看 245关注 0票数 1

我在Eclipse中尝试了hand_gesture_recognition of 气泡扫描器

有一条线可以得到像素的红色值:

代码语言:javascript
复制
int  []  Background;  

void Set(PImage I){

    for(int i=0; i<I.width*I.height; i++){
        int iP=I.pixels[i];
        Background[i*3]=(int)red(iP);
    }

}

最后一行是导致此错误的原因:

代码语言:javascript
复制
Exception in thread "Animation Thread" java.lang.NullPointerException  
    at processing.core.PApplet.red(Unknown Source)  
    at Test$PBGS.Set(Test.java:475)  
    at Test$PBGS.<init>(Test.java:466)  
    at Test.setup(Test.java:39)  
    at processing.core.PApplet.handleDraw(Unknown Source)  
    at processing.core.PApplet.run(Unknown Source)  
    at java.lang.Thread.run(Unknown Source)  

我猜这与在Eclipse中实现处理有关,您必须将color类型更改为int。那么,如果您想在Eclipse中使用处理,有什么方法可以更改/实现这个红()方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-06 17:34:41

NullPointerExceptions不应该是colorint之间的类型转换的结果,在任何情况下red()都会返回一个float,所以您的转换应该工作得很好。

我假设您初始化了数组,因为堆栈跟踪似乎表明错误不是由该赋值引起的.

看看PApplet,我看到了red()的定义

代码语言:javascript
复制
public final float red(int rgb) {
    return g.red(rgb);
}

其中g被声明为

代码语言:javascript
复制
public PGraphics g;

根据我对源的快速扫描,g似乎只在init()方法或public void size(final int w, final int h, String renderer, String path)方法中初始化。

查看堆栈跟踪,似乎还没有初始化g。您是否在代码中的其他地方调用了init()size()

PGraphics

代码语言:javascript
复制
public final float red(int rgb) {
    float c = (rgb >> 16) & 0xff;
    if (colorModeDefault) return c;
    return (c / 255.0f) * colorModeX;
}

所以没有任何东西可以抛出一个NullPointerException,因为它都是数学。我的第一个猜测是,PGraphics对象( red()需要的对象)从未初始化过。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23500984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档