「OpenCV에 의한 화상 처리 입문」연습 문제 4.2
연습 문제 4.2
1
2차원 배열 이미지를 사용하여 PGM 이미지를 만듭니다.
※main 함수에 매회 샘플 프로그램을 쓰면 장대해지기 때문에,
subX()의 함수를 만들어 적절히 main에서 부르는 구성으로 했다.
프로그램
sub6_1.cpp#include "sub.h";
using namespace std;
int sub6()
{
const int width = 9, height = 9;
unsigned char image[height][width];
string filename = "output.pgm";
ofstream fout(filename);
for (int y = 0;y < height;y++)
{
for (int x = 0;x < width;x++)
{
/* ここから作成開始 */
int tmp = 32 * x + 32 * y;
if (tmp < 256)
{
image[x][y] = tmp;
}
else if (tmp == 256)
{
image[x][y] = 255;
}
else if (tmp > 256)
{
image[x][y] = 256 - (tmp - 256);
}
/* ここまで */
}
}
fout << "P2" << endl;
fout << width << " " << height << endl;
fout << "255" << endl;
for (int y = 0;y < height;y++)
{
for (int x = 0;x < width;x++)
{
fout << (int)image[x][y] << " ";
}
fout << endl;
}
fout.flush();
fout.close();
return 0;
}
작성 파일
output.pgmP2
9 9
255
0 32 64 96 128 160 192 224 255
32 64 96 128 160 192 224 255 224
64 96 128 160 192 224 255 224 192
96 128 160 192 224 255 224 192 160
128 160 192 224 255 224 192 160 128
160 192 224 255 224 192 160 128 96
192 224 255 224 192 160 128 96 64
224 255 224 192 160 128 96 64 32
255 224 192 160 128 96 64 32 0
표시
2
1과 동일한 이미지를 1차원 배열 image를 사용하여 작성한다.
프로그램
sub6_2.cpp#include "sub.h";
using namespace std;
int sub6()
{
const int width = 9, height = 9;
unsigned char image[height * width];
string filename = "output.pgm";
ofstream fout(filename);
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
/* ここから作成開始 */
int tmp = 32 * x + 32 * y;
if (tmp < 256)
{
image[y*width+x] = tmp;
}
else if (tmp == 256)
{
image[y * width + x] = 255;
}
else if (tmp > 256)
{
image[y * width + x] = 256 - (tmp - 256);
}
/* ここまで */
}
}
fout << "P2" << endl;
fout << width << " " << height << endl;
fout << "255" << endl;
for (int y = 0;y < height;y++)
{
for (int x = 0;x < width;x++)
{
fout << (int)image[y*width + x] << " ";
}
fout << endl;
}
fout.flush();
fout.close();
return 0;
}
pgm 파일 및 이미지는 1과 같으므로 생략.
Reference
이 문제에 관하여(「OpenCV에 의한 화상 처리 입문」연습 문제 4.2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ikenohotori/items/dd6103494e016de1f4c3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include "sub.h";
using namespace std;
int sub6()
{
const int width = 9, height = 9;
unsigned char image[height][width];
string filename = "output.pgm";
ofstream fout(filename);
for (int y = 0;y < height;y++)
{
for (int x = 0;x < width;x++)
{
/* ここから作成開始 */
int tmp = 32 * x + 32 * y;
if (tmp < 256)
{
image[x][y] = tmp;
}
else if (tmp == 256)
{
image[x][y] = 255;
}
else if (tmp > 256)
{
image[x][y] = 256 - (tmp - 256);
}
/* ここまで */
}
}
fout << "P2" << endl;
fout << width << " " << height << endl;
fout << "255" << endl;
for (int y = 0;y < height;y++)
{
for (int x = 0;x < width;x++)
{
fout << (int)image[x][y] << " ";
}
fout << endl;
}
fout.flush();
fout.close();
return 0;
}
P2
9 9
255
0 32 64 96 128 160 192 224 255
32 64 96 128 160 192 224 255 224
64 96 128 160 192 224 255 224 192
96 128 160 192 224 255 224 192 160
128 160 192 224 255 224 192 160 128
160 192 224 255 224 192 160 128 96
192 224 255 224 192 160 128 96 64
224 255 224 192 160 128 96 64 32
255 224 192 160 128 96 64 32 0
#include "sub.h";
using namespace std;
int sub6()
{
const int width = 9, height = 9;
unsigned char image[height * width];
string filename = "output.pgm";
ofstream fout(filename);
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
/* ここから作成開始 */
int tmp = 32 * x + 32 * y;
if (tmp < 256)
{
image[y*width+x] = tmp;
}
else if (tmp == 256)
{
image[y * width + x] = 255;
}
else if (tmp > 256)
{
image[y * width + x] = 256 - (tmp - 256);
}
/* ここまで */
}
}
fout << "P2" << endl;
fout << width << " " << height << endl;
fout << "255" << endl;
for (int y = 0;y < height;y++)
{
for (int x = 0;x < width;x++)
{
fout << (int)image[y*width + x] << " ";
}
fout << endl;
}
fout.flush();
fout.close();
return 0;
}
Reference
이 문제에 관하여(「OpenCV에 의한 화상 처리 입문」연습 문제 4.2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ikenohotori/items/dd6103494e016de1f4c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)