Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Renderscript对我的图像采样不正确_Android_Image Processing_Renderscript_Android Renderscript - Fatal编程技术网

Android Renderscript对我的图像采样不正确

Android Renderscript对我的图像采样不正确,android,image-processing,renderscript,android-renderscript,Android,Image Processing,Renderscript,Android Renderscript,我有一个有多种颜色的图像(我们称之为面具)。我还有一份“选定”颜色的列表。我的renderscript生成一个新图像,我将其用作覆盖。如果遮罩和选定列表中都有颜色,则该区域的覆盖层应为红色,否则为绿色 以下是图片: 请注意,结果图像上覆盖着红色遮罩,中间有一条绿线。我已确保在创建第一幅图像时禁用抗锯齿功能,以便“遮罩”中没有意外的颜色。但是,由于某些原因,它在我的renderscript中不被视为一种或另一种颜色。代码如下: #pragma version(1) #pragma rs jav

我有一个有多种颜色的图像(我们称之为面具)。我还有一份“选定”颜色的列表。我的renderscript生成一个新图像,我将其用作覆盖。如果遮罩和选定列表中都有颜色,则该区域的覆盖层应为红色,否则为绿色

以下是图片:

请注意,结果图像上覆盖着红色遮罩,中间有一条绿线。我已确保在创建第一幅图像时禁用抗锯齿功能,以便“遮罩”中没有意外的颜色。但是,由于某些原因,它在我的renderscript中不被视为一种或另一种颜色。代码如下:

#pragma version(1)
#pragma rs java_package_name(za.co.overtake)

int*reds;
int*greens;
int*blues;
int imgWidth;

uchar4 RS_KERNEL root(uchar4 in, uint32_t x, uint32_t y) {
   bool colourme = false;

for(int col = 0; col < imgWidth; col++){

    const int red = reds[col];
    const int green = greens[col];
    const int blue = blues[col];

     if (in.r == red && in.g == green && in.b == blue){
        colourme = true;
    }
}
 if (colourme) {
    in.r = 117;
    in.g = 0;
    in.b = 0;
    in.a = 100;
 } else if (in.a > 200) {
     in.r = 10;
     in.g = 60;
     in.b = 10;
     in.a = 100;
 } else {
    in.r = 0;
    in.g = 0;
    in.b = 0;
    in.a = 0;
 }
return in;
}
布拉格语版本(1) #pragma rs java_包_名称(za.co.take) 国际*红色; int*绿色; 国际*蓝色; int imgWidth; uchar4 RS_内核根(uchar4 in、uint32_t x、uint32_t y){ bool colorme=false; for(int col=0;col200){ in.r=10; in.g=60; in.b=10; in.a=100; }否则{ in.r=0; in.g=0; in.b=0; in.a=0; } 返回; }
任何帮助都将不胜感激。我在这方面还是新手,我一直被困在这里

分配中的
是否只是您作为示例提供的“掩码”图像?看起来可能是面具做了一些修改。
红色
绿色
蓝色
数组中的颜色来自何处?是的,in只是遮罩。红色、绿色和蓝色是从选定的颜色列表中输入的(我不得不将其分成3个数组,因为我无法真正理解如何读取颜色数组。它在y TODO列表中)因此,对我来说没有意义的是,您提供的面具没有任何alpha,但是代码正在寻找alpha>200来确定何时启用绿色覆盖输出。这看起来好像您关心的线与数组中的颜色不匹配,但alpha已设置为>200,因此绿色被遮罩。您确定在使用遮罩并添加alpha通道时,您没有修改颜色吗?您能否提供原始输入图像以及为红色/绿色/蓝色设置的值?