问题描述
如图片有一叠如图物体,想要求出这一叠有多少片,个人思路如下:因为每片之间在拍照时一定会有阴影出现所以图片RGB颜色会呈现一种波形的图案。每一列从上往下即从0到heigth在第0行的时候得到该点像素,ARGB值,然后顺序往下走,如果该点和保存的点的颜色差值大于某个阀值则计数器加一,保存该点信息。到最后得到该列的一个片数,保存到一个数组中。然后循环从0到weigth即得到每列的片数。然后统计数组中出现次数最多的片数,作为最可能的结果输出出来。现在最大问题是如何计算两个像素即ARGB之间的差值,还有阀值如何设定,不能总是需要手动输入。求高人解答。现在用的是R+G+B但是这种总感觉不准确而且如果考虑进光线因素的话阀值如何判断。附上关键计算的代码:for(inti=100;i<w-100;i++)//没有从0到weight是考虑到两边可能会出现干扰。{sum=0;//每一列的时候计数器归零for(intj=0;j<h;j++){pixrgb=newImage.getRGB(i,j);//newimgae是个bufferedimage。c=newColor(pixrgb);r=c.getRed();g=c.getGreen();b=c.getBlue();if(Math.abs((r+g+b)-sumrgb)>=143)//如果两者之间的差值(绝对值)大于阀值{sumrgb=r+g+b;//保存该点信息sum++;//计数器加一}}sum=sum/2;System.out.print(sum+"");pianshu.add(sum);//放到ArrayList中。}
解决方案
解决方案二:
..............来个人啊郁闷赛
解决方案三:
这是图像处理技术了把
解决方案四:
解决方案五:
我表示不懂不知道