|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.11.2012, 13:20 | #1 |
Регистрация: 30.03.2009
Сообщений: 5
|
Open GL RGBtoCMYK
Помогити пожалуйста, вообщем нужно создать событие, при обработке которого будет совершаться пиксельное преобразование активного изображения (rgb в cmyk )
Я совсем не разбираюсь в указателях и в самой библиотеке. Мне удалось только загрузить картинку и воспроизвести код перевода. А как склеить эти формулы и само изображение не имею понятия. #include "stdafx.h" #include <math.h> #include <stdlib.h> #include <GL/glut.h> #include "RgbImage.h" void loadTextureFromFile(char *filename) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); glEnable(GL_DEPTH_TEST); RgbImage theTexMap( filename ); // Pixel alignment: each row is word aligned (aligned to a 4 byte boundary) // Therefore, no need to call glPixelStore( GL_UNPACK_ALIGNMENT, ... ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); gluBuild2DMipmaps(GL_TEXTURE_2D, 3,theTexMap.GetNumCols(), theTexMap.GetNumRows(), GL_RGB, GL_UNSIGNED_BYTE, theTexMap.ImageData() ); } /* * Draw the texture in the OpenGL graphics window */ void drawScene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glBegin(GL_QUADS); glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 0.0); glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 0.0); glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 1.0, 0.0); glTexCoord2f(1.0, 0.0); glVertex3f(1.0, -1.0, 0.0); glEnd(); glFlush(); glDisable(GL_TEXTURE_2D); } void resizeWindow(int w, int h) { float viewWidth = 1.1; float viewHeight = 1.1; glViewport(0, 0, w, h); h = (h==0) ? 1 : h; w = (w==0) ? 1 : w; glMatrixMode(GL_PROJECTION); glLoadIdentity(); if ( h < w ) { viewWidth *= (float)w/(float)h; } else { viewHeight *= (float)h/(float)w; } glOrtho( -viewWidth, viewWidth, -viewHeight, viewHeight, -1.0, 1.0 ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void keyboard (unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; default: break; } } void CALLBACK display(void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glRasterPos2d(-4.5,-3); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelZoom(0.5, 0.5); glDrawPixels(image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, image->data); auxSwapBuffers(); } void RGB2CMYK(GLbyte r, GLbyte g, GLbyte b, GLbyte c, GLbyte m, GLbyte y, GLbyte k) { float R, G, B; R = (float) r; G = (float) g; B = (float) b; R = 1.0 - (R / 255.0); G = 1.0 - (G / 255.0); B = 1.0 - (B / 255.0); float C, M, Y, K; if (R < G) {K = R; } else {K = G; } if (B < K) {K = B;} C = (R - K)/(1.0 - K); M = (G - K)/(1.0 - K); Y = (B - K)/(1.0 - K); C = (C * 100) + 0.5; M = (M * 100) + 0.5; Y = (Y * 100) + 0.5; K = (K * 100) + 0.5; c = (GLbyte) C; m = (GLbyte) M; y = (GLbyte) Y; k = (GLbyte) K; } char* filename = "v.bmp"; int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(270, 270); glutInitWindowPosition(100, 100); glutCreateWindow(argv[0]); loadTextureFromFile( filename ); glutDisplayFunc(drawScene); glutReshapeFunc(resizeWindow); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; } Заранее спасибо. Последний раз редактировалось Гвендолин; 14.11.2012 в 20:03. |
16.11.2012, 13:29 | #2 |
Регистрация: 30.03.2009
Сообщений: 5
|
печаль...OpenGl, технология ставшая символов, Учебник в примерах.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с Open GL | Arley Kinn | Помощь студентам | 1 | 16.10.2012 21:45 |
Open gl | qsv1991 | Помощь студентам | 3 | 30.07.2012 20:35 |
Window.open() | Kioto | ASP.NET | 5 | 07.05.2012 07:50 |
open() | Qaliti | JavaScript, Ajax | 4 | 06.03.2012 15:03 |
Open GL, C++ | Алина_258 | Помощь студентам | 6 | 18.06.2011 18:53 |