Android Renderscript对我的图像采样不正确
我有一个有多种颜色的图像(我们称之为面具)。我还有一份“选定”颜色的列表。我的renderscript生成一个新图像,我将其用作覆盖。如果遮罩和选定列表中都有颜色,则该区域的覆盖层应为红色,否则为绿色 以下是图片: 请注意,结果图像上覆盖着红色遮罩,中间有一条绿线。我已确保在创建第一幅图像时禁用抗锯齿功能,以便“遮罩”中没有意外的颜色。但是,由于某些原因,它在我的renderscript中不被视为一种或另一种颜色。代码如下:Android Renderscript对我的图像采样不正确,android,image-processing,renderscript,android-renderscript,Android,Image Processing,Renderscript,Android Renderscript,我有一个有多种颜色的图像(我们称之为面具)。我还有一份“选定”颜色的列表。我的renderscript生成一个新图像,我将其用作覆盖。如果遮罩和选定列表中都有颜色,则该区域的覆盖层应为红色,否则为绿色 以下是图片: 请注意,结果图像上覆盖着红色遮罩,中间有一条绿线。我已确保在创建第一幅图像时禁用抗锯齿功能,以便“遮罩”中没有意外的颜色。但是,由于某些原因,它在我的renderscript中不被视为一种或另一种颜色。代码如下: #pragma version(1) #pragma rs jav
#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;col任何帮助都将不胜感激。我在这方面还是新手,我一直被困在这里 分配中的
是否只是您作为示例提供的“掩码”图像?看起来可能是面具做了一些修改。红色
、绿色
和蓝色
数组中的颜色来自何处?是的,in只是遮罩。红色、绿色和蓝色是从选定的颜色列表中输入的(我不得不将其分成3个数组,因为我无法真正理解如何读取颜色数组。它在y TODO列表中)因此,对我来说没有意义的是,您提供的面具没有任何alpha,但是代码正在寻找alpha>200来确定何时启用绿色覆盖输出。这看起来好像您关心的线与数组中的颜色不匹配,但alpha已设置为>200,因此绿色被遮罩。您确定在使用遮罩并添加alpha通道时,您没有修改颜色吗?您能否提供原始输入图像以及为红色/绿色/蓝色设置的值?