Frage : Pixeldaten für eine 3 Kanäle RGB-Bildbibliothek acces Verletzung erhalten und einstellend?

Hallo, habe ich eine Bildbibliothek, die Grayscale und rgb-Bild hat.

I getan Code, um zu lesen und auf das Grayscalebild und den Anruf für diese Funktion zu schreiben läuft gut, aber leider habe ich eine Ausgabe für das Funktion setpixel auf dem rgb-Bild.  

I denken, dass das Problem von einer Umwandlung von doppeltem zu nicht unterzeichnetem long
because kommt, das ich ein LUT (llok herauf Tabelle) verwende das ein Doppeltes anstelle von lang zurückbringt und, es in der setpixel Funktion möglicherweise mich dann zu führen eine ltoa () Funktion verwenden muss, bevor es so sie zum setpixel des rgb-Bildes führt, wie das tun?

Here unterhalb der Prototypen beider Funktionen:

class CImageY_Int
{
public:
// die y-Koordinate geht von der Oberseite botom
zum virtuellen nicht unterzeichneten Putzfrau get_pixel (int x, int y)=0;

//set das Pixel RGB mit dem Putzfrau value
virtuellen leeren set_pixel (int x, int y, nicht unterzeichnete Putzfrau pxl_char) =0;


}

class CImageRGB_Int
{
public:
// die x-Koordinate geht von links nach rechts
//, welches die y-Koordinate von der Oberseite botom
zum virtuellen nicht unterzeichneten langen get_pixel geht (int x, int y)=0;

//set das pixle RGB mit dem langen value
virtuellen leeren set_pixel (int x, int y, nicht unterzeichnetes langes pxl_lng) =0;


}

Thank you


1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
//the Grayscalefunktion:

leeres pre_process_y (CImageY_Int* CImgY, double* lut_transform, intparam, CImageY_Int* CImgY_InOut)
{
	int w=CImgY->get_img_width ();
	int h=CImgY->get_img_height ();
	int I =0;
	int J =0;
	nicht unterzeichnetes Putzfraugrau;

	// verursachen einen cimage Puffer
	nicht unterzeichnetes Putzfrau *cimageDataPointer;
	cimageDataPointer = CImgY->get_img_data ();

	// verursachen einen cimage Puffer
	nicht unterzeichnetes Putzfrau *cimageDataPointer_inout;
	cimageDataPointer_inout = CImgY_InOut->get_img_data ();

	//copying von CImages
	für (nicht unterzeichneter int p=0; pget_img_height (); p++)
	{
		//-Gedächtniskopie 
		memcpy (cimageDataPointer_inout, cimageDataPointer, CImgY->get_img_width () *1); 
		// cimageDataPointer Sprung zur folgenden Linie 
		cimageDataPointer = cimageDataPointer + CImgY->get_img_width () *1; 
		// cvImageDataPointer Sprung zur folgenden Linie
		cimageDataPointer_inout = cimageDataPointer_inout+ (CImgY_InOut->get_img_width () *1);
	}

  für (j=0; jget_pixel (i, j);
		CImgY_InOut->set_pixel (i, J, lut_transform [grau]);

	  }
	}

}



Funktion //the-rgb:

pre_process_rgb (CImageRGB_Int* CImgRGB, double* lut_transform, intparam, CImageRGB_Int* CImgRGB_InOut)
{
	int nb_channel =3;
	int w=CImgRGB->get_img_width ();
	int h=CImgRGB->get_img_height ();
	int I =0;
	int J =0;
	int k =0;
	nicht unterzeichnete lange Farbe;

	// verursachen einen cimage Puffer
	nicht unterzeichnetes Putzfrau *cimageDataPointer;
	cimageDataPointer = CImgRGB->get_img_data ();

	// verursachen einen cimage Puffer
	nicht unterzeichnetes Putzfrau *cimageDataPointer_inout;
	cimageDataPointer_inout = CImgRGB_InOut->get_img_data ();

	//copying von CImage zum Lebenslauf-Bild
	für (nicht unterzeichneter int p=0; pget_img_height (); p++)
	{
		//-Gedächtniskopie 
		memcpy (cimageDataPointer_inout, cimageDataPointer, CImgRGB->get_img_width () *nb_channel); 
		// cimageDataPointer Sprung zur folgenden Linie 
		cimageDataPointer = cimageDataPointer + CImgRGB->get_img_width () *nb_channel; 
		// cvImageDataPointer Sprung zur folgenden Linie
		cimageDataPointer_inout = cimageDataPointer_inout+ (CImgRGB_InOut->get_img_width () *nb_channel); //+nb_channel?
	}

  für (j=0; jget_pixel (i, j);

			//pCImgRGB- >set_pixel (0, 0, 0x080706);
		 	CImgRGB_InOut->set_pixel (i, J, lut_transform [Farbe]); //ERROR-ZUGRIFFSFEHLER 

	  }
	}


}

Antwort : Pixeldaten für eine 3 Kanäle RGB-Bildbibliothek acces Verletzung erhalten und einstellend?

O.K. Ich beginne, zu verstehen, wo Sie gehen möchten.

Ist dieses, was Sie gehabt im Verstand?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
  für (j=0; jget_pixel (i, j);

			nicht unterzeichnetes Putzfrau color_r = Farbe u. 0x000000FF;
			nicht unterzeichnetes Putzfrau color_g = (Farbe u. 0x0000FF00) >> 8;
			nicht unterzeichnetes Putzfrau color_b = (Farbe u. 0x00FF0000) >> 16;
			nicht unterzeichnetes Putzfrau color_a = (Farbe u. 0xFF000000) >> 24;

			nicht unterzeichnetes langes color2 = (color_a <>set_pixel (0, 0, 0x080706);
		 	CImgRGB_InOut->set_pixel (i, J, color2);

	  }
	}
Weitere Lösungen  
 
programming4us programming4us