已解决:问题是“jpeg压缩”。另存为“.png”工作正常。
我用java中的一个canny过滤器程序检测了一张图像的边缘。在应用过滤器后...
This is my image如果放大... Zoomed
它们都有不同深浅的黑色和白色。
我希望所有边缘像素为白色(#FFFFFF),其余部分为黑色。
注:不同的像素可能有不同的阴影,除了上面的(#F7F7F7)。上面的缩放图像只是一个例子。
编辑:我写了这段代码来生效的图像...
public void convert(){
try{
BufferedImage img = ImageIO.read(new File("input.jpg"));
int rgb;
int height = img.getHeight();
int width = img.getWidth();
File f = new File("newThreshold.jpg");
Color white = new Color(255,255,255);
int wh = white.getRGB();
for (int h = 0; h<height; h++){
for (int w = 0; w<width; w++){
rgb = img.getRGB(w, h);
red = (rgb & 0x00ff0000) >> 16;
green = (rgb & 0x0000ff00) >> 8;
blue = rgb & 0x000000ff;
if(red >= 200 || blue >= 200 || green >= 200){
img.setRGB(w,h,wh);
}
}
}
ImageIO.write(img,"jpg",f);
}
catch(Exception e){
}
}
即使在运行代码之后,我的图像也没有任何变化。
即使红色、绿色和蓝色值高于200,我的图像也没有变化。
更新:将图像保存为“.png”而不是“.jpg”成功!
1条答案
按热度按时间waxmsbnn1#
你可以检查图像中的每个像素,判断它是否超过了某个阈值,是否被设置为纯白。如果需要,你也可以对较暗的区域做同样的事情。
示例: