23.11.3 (금) 32일차
(보기 > 다른 창 > Image Watch)
#pragma once
#include "Common.h"
int main()
{
std::string fileName = "../KCCImageNet/stop_img.png";
cv::Mat src = cv::imread(fileName, cv::ImreadModes::IMREAD_ANYCOLOR);
return 1;
}
#pragma once
#include "Common.h"
int main()
{
const int length = 3 * 3;
int datas[length] = { 5, 3, 1, 4, 6, 4, 8, 4, 3 };
int counts[length] = { 0, };
int _max_count_val = -1;
int _min_count_val = 1000;
for (size_t i = 0; i < length; i++)
{
counts[datas[i]]++;
if (_max_count_val < counts[datas[i]]) _max_count_val = counts[datas[i]];
if (_min_count_val > counts[datas[i]]) _min_count_val = counts[datas[i]];
}
for (size_t i = 0; i < length; i++)
{
if (_max_count_val == counts[i])
cout << "가장 많은 빈도 값: " << i << " ... " << counts[i] << endl;
}
for (size_t i = 0; i < length; i++)
{
if (_min_count_val == counts[i])
cout << "가장 적은 빈도 값: " << i << " ... " << counts[i] << endl;
}
return 1;
}
#pragma once
#include "Common.h"
int main()
{
std::string fileName = "../KCCImageNet/stop_img.png";
cv::Mat src = cv::imread(fileName, cv::ImreadModes::IMREAD_GRAYSCALE);
uchar* pData = src.data; // data array
int length = src.total(); // data length
int counts[256] = { 0, };
int _max_count_val = -1;
float nrm;
for (size_t i = 0; i < length; i++)
{
counts[pData[i]]++;
if (_max_count_val < counts[pData[i]]) _max_count_val = counts[pData[i]];
}
for (size_t i = 0; i < 256; i++)
{
cout << i << " | ";
nrm = counts[i] * 1.0 / _max_count_val * 100;
for (size_t j = 0; j < nrm; j++)
{
cout << "=";
}
cout << endl;
}
return 1;
}
이미지 크기 동적 할당하기
const int histoSz = 256; // sizeof(uchar);
int counts[histoSz] = { 0, };
int* pHisto = new int[length];
#pragma once
#include "Common.h"
int main()
{
std::string fileName = "../KCCImageNet/stop_img.png";
cv::Mat src = cv::imread(fileName, cv::ImreadModes::IMREAD_GRAYSCALE);
resize(src, src, Size(src.cols * 2, src.rows * 2));
uchar* pData = src.data; // data array
int length = src.total(); // data length
int channels = src.channels();
// length *= channels;
const int histoSz = 256; // sizeof(uchar);
int histo[histoSz] = { 0, };
// int* pHisto = new int[length];
for (size_t i = 0; i < length; i++)
{
histo[pData[i]]++;
}
int size = src.rows * src.cols;
auto result = minmax_element(pData, pData + length);
double mean_brightness = mean(src)[0];
auto _minmax = minmax_element(histo, histo + histoSz);
int _min_value = *_minmax.first;
int _max_value = *_minmax.second;
string strLine;
for (size_t row = 0; row < histoSz; row++)
{
strLine = "";
strLine += to_string(row);
strLine += (" || ");
int scaled_cols = (histo[row]*1.0 / _max_value) * 100;
for (size_t col = 0; col < scaled_cols; col++)
{
strLine += ("=");
}
cout << strLine << endl;
}
Mat draw = src.clone();
cvtColor(draw, draw, ColorConversionCodes::COLOR_GRAY2BGR);
for (size_t row = 0; row < histoSz; row++)
{
int scaled_cols = (histo[row] * 1.0 / _max_value) * 100;
Point st = Point(0, row*2.7);
Point ed = Point(scaled_cols, row*2.7);
line(draw, st, ed, CV_RGB(255, 255, 0));
}
int a = 0;
return 1;
}