Untitled
unknown
plain_text
a year ago
2.7 kB
13
Indexable
// This is just implementing the filters
// input handling is already given in a file by cs50 staff
#include "helpers.h"
#include <stdio.h> /////////////////////////////////////////////////////
void swap(RGBTRIPLE *px, RGBTRIPLE *px2);
// Convert image to grayscale
void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
int gray;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
RGBTRIPLE *px = &image[i][j];
gray = (((*px).rgbtBlue + (*px).rgbtGreen + (*px).rgbtRed + 1.5) / 3);
(*px).rgbtBlue = gray;
(*px).rgbtGreen = gray;
(*px).rgbtRed = gray;
}
}
}
/*
if (j > 200 && j < 300)
{
continue;
}
*/
// Reflect image horizontally
void reflect(int height, int width, RGBTRIPLE image[height][width])
{
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width / 2; j++)
{
swap(&image[i][j], &image[i][width - j - 1]);
}
}
}
// Blur image
void blur(int height, int width, RGBTRIPLE image[height][width])
{
RGBTRIPLE tmp[height][width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
int blue_sum = 0, green_sum = 0, red_sum = 0;
int count = 0;
for (int ai = -1; ai <= 1; ai++)
{
for (int aj = -1; aj <= 1; aj++)
{
int ni = i + ai;
int nj = j + aj;
if (ni >= 0 && nj >= 0 && ni < height && nj < width)
{
blue_sum += image[ni][nj].rgbtBlue;
green_sum += image[ni][nj].rgbtGreen;
red_sum += image[ni][nj].rgbtRed;
count++;
}
}
}
tmp[i][j].rgbtBlue = (blue_sum / count) + 0.5;
tmp[i][j].rgbtGreen = (green_sum / count) + 0.5;
tmp[i][j].rgbtRed = (red_sum / count) + 0.5;
}
}
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
image[i][j] = tmp[i][j];
}
}
}
/*if (j > 200 && j < 300)
{
tmp[i][j] = image[i][j];
continue;
}*/
// Detect edges
void edges(int height, int width, RGBTRIPLE image[height][width])
{
return;
}
// Swaps pixels
void swap(RGBTRIPLE *px, RGBTRIPLE *px2)
{
RGBTRIPLE tmp = *px;
*px = *px2;
*px2 = tmp;
}
Editor is loading...
Leave a Comment