Ich schrieb das folgende Programm, das von der Farbe zu konvertieren versuchtOpenCV Java Graustufen-
Mat newImage = Imgcodecs.imread("q1.jpg");
Mat image=new Mat(new Size(newImage.cols(),newImage.rows()),CvType.CV_64FC3);
int totalBytes = (int)(newImage.total() * newImage.elemSize());
byte buffer[] = new byte[totalBytes];
newImage.get(0, 0,buffer);
double b[]=new double [totalBytes];
for(int i=0;i<totalBytes;i=i+3){
{
double medie=(buffer[i]+buffer[i+1]+buffer[i+2])/3;
b[i]=medie;
b[i+1]=medie;
b[i+2]=medie;
}
}
image.put(0, 0, b);
Imgcodecs.imwrite("tu3.jpg",image);
Die Tatsache, in Graustufen ist, dass es mir ein seltsames Bild gibt, wenn ich this.If kann ich den Code wie folgt:
public static void main(String[] args) {
Mat newImage = Imgcodecs.imread("q1.jpg");
newImage.convertTo(newImage, CvType.CV_64FC3);
Mat image=new Mat(new Size(newImage.cols(),newImage.rows()),CvType.CV_64FC3);
int totalBytes = (int)(newImage.total() * newImage.elemSize());
double buffer[] = new double[totalBytes];
newImage.get(0, 0,buffer);
double b[]=new double [totalBytes];
for(int i=0;i<totalBytes;i=i+3){
{
double medie=(double)((buffer[i]+buffer[i+1]+buffer[i+2]))/3;
b[i]=medie;
b[i+1]=medie;
b[i+2]=medie;
}
}
image.put(0, 0, b);
Imgcodecs.imwrite("tu3.jpg",image);
}
es gibt mir einen guten. Warum passiert das? Wenn dieser Byte-Puffer in double medie kommt, wird er nicht implizit in double umgewandelt?