画像をグレースケールに変換してから、このようにピクセルを読み取りました
for (int i = 0; i < image.getHeight(); i++)
{
for (int j = 0; j < image.getWidth(); j++)
{
pixels[k]=(byte) (image.getPixel(j, i));
pixels2[k]=unsignedToBytes(pixels[k]);
k++;
}
}
そして、エッジ検出を実行すると正のバイト配列が得られるようになったので、画像がこれを試したが結果が得られなかったので、どのように再度表示する必要がありますか
imageView1.setImageBitmap(BitmapFactory.decodeByteArray(edgeImage1, 0, edgeImage1.length));
私たちを助けてください....
public int edgedetection6(int[][] oimage,int tblock)
{
ImageView imageView1 = (ImageView) findViewById(R.id.imgView1);
int edgeImage[][]=new int[42][42];
byte edgeImage1[]=new byte[42*42];
int n=0;
//int s[][]={{-1,-1,-1},{-1,8,-1},{-1,-1,-1}};
long R=0;
for(int i=0;i<42;i++)
{
for(int j=0;j<42;j++)
{
if(i==0 || j==0 || i==41 || j==41 )
edgeImage[i][j]=0;
else
edgeImage[i][j]=oimage[i-1][j-1];
}
}
for(int i=0;i<40;i++)
{
for(int j=0;j<40;j++)
{
R=8*edgeImage[i+1][j+1]-(edgeImage[i][j]+edgeImage[i][j+1]+edgeImage[i][j+2]+edgeImage[i+1][j]+edgeImage[i+1][j+2]+edgeImage[i+2][j]+edgeImage[i+2][j+1]+edgeImage[i+2][j+2]);
if(R>0)
edgeImage[i+1][j+1]=1;
else
edgeImage[i+1][j+1]=0;
edgeImage1[n]=(byte)edgeImage[i][j];
n++;
}
}
ImageView imageView1 = (ImageView) findViewById(R.id.imgView1);
imageView1.setImageBitmap(BitmapFactory.decodeByteArray(edgeImage1, 0, edgeImage.length));
}