Questione : ottenendo e fissando i dati del pixel per una violazione dei 3 delle scanalature di RGB di immagine acces della biblioteca?

Ciao, ho una biblioteca di immagine che ha la gradazione di grigio ed immagine di rgb. il

I ha fatto il codice per leggere e scrivere sull'immagine di gradazione di grigio e sulla richiesta per questa funzione funziona bene ma purtroppo ho un'edizione per il setpixel di funzione sull'immagine di rgb.  il

I pensa che il problema venga da una conversione da doppio a long
because sto usando un LUT (llok sulla tabella) che restituisce un doppio anziché lungamente ed allora passarglielo nella funzione del setpixel forse deve usare una funzione di ltoa () prima di passarla al setpixel dell'immagine di rgb così come fare quello?

Here sotto i prototipi di entrambe le funzioni:

class CImageY_Int
{
public: il
// di coordinata y va dalla parte superiore al get_pixel senza firma virtuale del carbone del botom
(int x, int y)=0;

//set il pixel RGB con il set_pixel vuoto virtuale del value
del carbone (int x, int y, carbone senza firma pxl_char) =0;

class CImageRGB_Int
{
public del
} del

…: il
// di coordinata x va da sinistra a destra
// che di coordinata y va dalla parte superiore al get_pixel lungo senza firma virtuale del botom
(int x, int y)=0;

//set il pixle RGB con il set_pixel vuoto virtuale lungo del value
(int x, int y, pxl_lng lungo senza firma) =0; you


del

Thank del
del

…} class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
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:
36:
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:
funzione notpretty di gradazione di grigio di >//the " del class= " " di codeSnippet821729 del id= del
get_img_width di int ();
	h=CImgY->get_img_height di int ();
	int i =0;
	int J =0;
	gray senza firma del carbone;

	// genera un amplificatore di cimage
	*cimageDataPointer senza firma del carbone;
	cimageDataPointer = CImgY->get_img_data ();

	// genera un amplificatore di cimage
	*cimageDataPointer_inout senza firma del carbone;
	cimageDataPointer_inout = CImgY_InOut->get_img_data ();

	//copying da CImages
	per (int senza firma p=0; pget_img_height (); p++)
	{
		copia di memoria di // 
		memcpy (cimageDataPointer_inout, cimageDataPointer, CImgY->get_img_width () *1); 
		salto del cimageDataPointer di // alla linea seguente 
		cimageDataPointer = cimageDataPointer + CImgY->get_img_width () *1; 
		salto del cvImageDataPointer di // alla linea seguente
		cimageDataPointer_inout = cimageDataPointer_inout+ (CImgY_InOut->get_img_width () *1);
	}

  per (j=0; jget_pixel (i, j);
		CImgY_InOut->set_pixel (i, J, lut_transform [grigio]);

	  }
	}

}



funzione di //the rgb:

pre_process_rgb (CImageRGB_Int* CImgRGB, lut_transform del double*, param di int, CImageRGB_Int* CImgRGB_InOut)
{
	nb_channel =3 di int;
	w=CImgRGB->get_img_width di int ();
	h=CImgRGB->get_img_height di int ();
	int i =0;
	int J =0;
	int K =0;
	colore lungo senza firma;

	// genera un amplificatore di cimage
	*cimageDataPointer senza firma del carbone;
	cimageDataPointer = CImgRGB->get_img_data ();

	// genera un amplificatore di cimage
	*cimageDataPointer_inout senza firma del carbone;
	cimageDataPointer_inout = CImgRGB_InOut->get_img_data ();

	//copying da CImage all'immagine del cv
	per (int senza firma p=0; pget_img_height (); p++)
	{
		copia di memoria di // 
		memcpy (cimageDataPointer_inout, cimageDataPointer, *nb_channel di CImgRGB->get_img_width ()); 
		salto del cimageDataPointer di // alla linea seguente 
		cimageDataPointer = cimageDataPointer + *nb_channel di CImgRGB->get_img_width (); 
		salto del cvImageDataPointer di // alla linea seguente
		cimageDataPointer_inout = cimageDataPointer_inout+ (*nb_channel di CImgRGB_InOut->get_img_width ()); //+nb_channel?
	}

  per (j=0; jget_pixel (i, j);

			>set_pixel di //pCImgRGB- (0, 0, 0x080706);
		 	CImgRGB_InOut->set_pixel (i, J, lut_transform [colore]); VIOLAZIONE DI ACCESSO DI //ERROR 

	  }
	}


}
class= del

Risposta : ottenendo e fissando i dati del pixel per una violazione dei 3 delle scanalature di RGB di immagine acces della biblioteca?

Approvazione. Sto cominciando capire dove volete andare.

È questo che cosa voi avuto in mente?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
  per (j=0; jget_pixel (i, j);

			color_r senza firma = colore & 0x000000FF del carbone;
			color_g senza firma del carbone = (colore & 0x0000FF00) >> 8;
			color_b senza firma del carbone = (colore & 0x00FF0000) >> 16;
			color_a senza firma del carbone = (colore & 0xFF000000) >> 24;

			lungo senza firma color2 = (set_pixel <>di color_a (0, 0, 0x080706);
		 	CImgRGB_InOut->set_pixel (i, J, color2);

	  }
	}
Altre soluzioni  
 
programming4us programming4us