임베디드 개발자/코딩
이미지 처리
임베디드초보자
2022. 1. 19. 21:18
#define _CRT_SECURE_NO_WARNINGS
using namespace std; // C++ 추가기능
#include <string>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
//선언부
const int ROW = 8, COL = 8;//행과 열 변수 선언
unsigned char m_image[ROW][COL];//8*8의 2차 배열 선언
void printImage() {
// 2*2배열을 출력한다.
for (int i = 0; i < ROW; i++) {
for (int k = 0; k < COL; k++) {
printf("%3d ", m_image[i][k]);
}
printf("\n");
}
printf("\n");
}//2차 배열을 출력하는 부분
int main() {
// 이미지 배열을 초기화 시키기
for (int i = 0; i < ROW; i++)
for (int k = 0; k < COL; k++)
m_image[i][k] = 0;//배열을 전부 0으로 초기화 시킨다.
// 이미지 파일 --> 배열 Loading
unsigned char pixel; // 이미지의 한 점의 값 (0~255)
srand(time(NULL)); // 랜덤 초기화
//pixel 이라는 2차 배열에 숫자들을 집어 넣어줌
for (int i = 0; i < ROW; i++)
for (int k = 0; k < COL; k++) {
pixel = rand() % 256; // 랜덤은 아무 숫자나 들어가지만 256으로 나누어 몫을 취함으로서 0~255까지의 숫자만 pixel에 들어간다.
m_image[i][k] = pixel;
}//배열에 0~ 255까지의 랜덤 숫자를 집어 넣는다.
printImage();
//////// 영상 처리 ///////////
/// (1) 영상을 밝게 처리 --> 값을 증가 (50)
int value = 50;//증가할 값
for (int i = 0; i < ROW; i++) {
for (int k = 0; k < COL; k++) {
int px = m_image[i][k] + value;//각 값에 50을 더한다.
//이때 우리가 선언한 unsigned char은 255 이상의 숫자를 출력할 수 없다.
if (px > 255)
m_image[i][k] = 255;
else
m_image[i][k] += value;
}
}
// 이미지를 화면 출력
// 2*2배열을 출력한다.
for (int i = 0; i < ROW; i++) {
for (int k = 0; k < COL; k++) {
printf("%3d ", m_image[i][k]);
}
printf("\n");
}
printf("\n");
//-100
int mavalue = 100;
for (int i = 0; i < ROW; i++) {
for (int k = 0; k < COL; k++) {
int px = m_image[i][k] - mavalue;
if (px < 0)
m_image[i][k] = 0;
else
m_image[i][k] -= mavalue;
}
}
// 이미지를 화면 출력
printImage();
//반전하기///////////////////////////////////////////////////
////////////////////////////////////////////////////
int banvalue = 255;
for (int i = 0; i < ROW; i++) {
for (int k = 0; k < COL; k++) {
m_image[i][k]=255- m_image[i][k];
}
}
// 이미지를 화면 출력
printImage();
///////////흑백처리/////////////////////
///////////흑백처리/////////////////////
///////////흑백처리/////////////////////
int bvalue = 128;
for (int i = 0; i < ROW; i++) {
for (int k = 0; k < COL; k++) {
int px1 = m_image[i][k] - bvalue;
if (px1 >= 0)
m_image[i][k] = 255;
else
m_image[i][k] = 0;
}
}
// 이미지를 화면 출력
printImage();
///////////좌우/////////////////////
///////////좌우/////////////////////
///////////좌우/////////////////////
for (int i = 0; i < ROW; i++) {
for (int k = 0; k < COL; k++) {
printf("%3d ", m_image[i][COL-1-k]);
}
printf("\n");
}
printf("\n");
///////////상하/////////////////////
///////////상하/////////////////////
///////////상하/////////////////////
for (int i = 0; i < ROW; i++) {
for (int k = 0; k < COL; k++) {
printf("%3d ", m_image[COL-1-i][k]);
}
printf("\n");
}
printf("\n");
printImage();
}