Заказал цветC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Заказал цвет

Сообщение Anonymous »

В настоящее время я делаю проект, в котором я должен уменьшить изображение 24BPP до изображения 3BPP, используя заказанную 4x4 -матрицу Dither. Однако, выполняя мою обработку, мой образ появляется только около 1/3 пути. Кто -нибудь знает, что я делаю не так?#include
#include

/*24 bit per pixel - 3 bit per pixel dither*/
/*Use the 4x4 Ordered Dither Matrix:

[1 9 3 11]
[13 5 15 7]
[4 12 2 10]
[16 8 14 6]

*/
int checkColor(int a, int b);

unsigned char buf[512][512];
unsigned char out[512][512];
float ratio = 1.0 / 17;

int main(){

FILE *fp, *output;
int i, j, k, l;

/*dither matrix*/
unsigned int dith[4][4] = {{1, 9, 3, 11}, {13, 5, 15, 7}, {4, 12, 2, 10}, {16, 8, 14, 6}};

if((fp = fopen("LennaRGB512.data", "rb")) == NULL){
printf("error opening file\n");
}

for (i = 0; i < 512; i++) {
for (j = 0; j < 512; j++) {
buf[j] = fgetc(fp); /*Put data in buffer*/
}
}

i = 0;
j = 0;

int x, y;
int bd = 64;
for (k = 0; k < 512; k++){
for (l = 0; l < 512; l++){
int oldPixel = buf[k][l];
int value = (oldPixel + (ratio * dith[k%4][l%4]));

int r = ((oldPixel >> 16) & 0xff) + value;
int g = ((oldPixel >> 8) & 0xff) + value;
int b = (oldPixel & 0xff) + value;

int newPixel = 0x000000 | checkColor(r, bd)

Подробнее здесь: https://stackoverflow.com/questions/400 ... lor-dither
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»