Zaktualizuj 'examples/example_win32_directx11/main.cpp'
This commit is contained in:
parent
46ee5c27a9
commit
21218837b3
@ -69,8 +69,7 @@ bool LoadTextureFromFile(unsigned char* image_data, int image_width, int image_h
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
// Funkcja dokonuj¹ca dylacji
|
void dilation(unsigned char* image, int width, int height) {
|
||||||
void dilation(const unsigned char* image, int width, int height, unsigned char* output) {
|
|
||||||
int structuringElement[3][3] = {
|
int structuringElement[3][3] = {
|
||||||
{0, 255, 0},
|
{0, 255, 0},
|
||||||
{255, 255, 255},
|
{255, 255, 255},
|
||||||
@ -92,13 +91,13 @@ void dilation(const unsigned char* image, int width, int height, unsigned char*
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output[y * width + x] = static_cast<unsigned char>(maxPixelValue > 255 ? 255 : maxPixelValue);
|
image[y * width + x] = static_cast<unsigned char>(maxPixelValue > 255 ? 255 : maxPixelValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funkcja dokonuj¹ca erozji
|
|
||||||
void erosion(const unsigned char* image, int width, int height, unsigned char* output) {
|
void erosion(unsigned char* image, int width, int height) {
|
||||||
int structuringElement[3][3] = {
|
int structuringElement[3][3] = {
|
||||||
{0, 255, 0},
|
{0, 255, 0},
|
||||||
{255, 255, 255},
|
{255, 255, 255},
|
||||||
@ -120,13 +119,12 @@ void erosion(const unsigned char* image, int width, int height, unsigned char* o
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output[y * width + x] = static_cast<unsigned char>(minPixelValue < 0 ? 0 : minPixelValue);
|
image[y * width + x] = static_cast<unsigned char>(minPixelValue < 0 ? 0 : minPixelValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funkcja dokonuj¹ca hit-and-miss
|
void hitAndMiss(unsigned char* image, int width, int height) {
|
||||||
void hitAndMiss(const unsigned char* image, int width, int height, unsigned char* output) {
|
|
||||||
int structuringElement1[3][3] = {
|
int structuringElement1[3][3] = {
|
||||||
{0, 0, 0},
|
{0, 0, 0},
|
||||||
{255, 255, 0},
|
{255, 255, 0},
|
||||||
@ -158,13 +156,12 @@ void hitAndMiss(const unsigned char* image, int width, int height, unsigned char
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output[y * width + x] = (match1 && match2) ? 255 : 0;
|
image[y * width + x] = (match1 && match2) ? 255 : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funkcja dokonuj¹ca pogrubiania
|
void thickening(unsigned char* image, int width, int height) {
|
||||||
void thickening(const unsigned char* image, int width, int height, unsigned char* output) {
|
|
||||||
int structuringElement[3][3] = {
|
int structuringElement[3][3] = {
|
||||||
{0, 255, 0},
|
{0, 255, 0},
|
||||||
{255, 255, 255},
|
{255, 255, 255},
|
||||||
@ -179,7 +176,7 @@ void thickening(const unsigned char* image, int width, int height, unsigned char
|
|||||||
if (x + i >= 0 && x + i < width && y + j >= 0 && y + j < height) {
|
if (x + i >= 0 && x + i < width && y + j >= 0 && y + j < height) {
|
||||||
int structuringElementValue = structuringElement[j + 1][i + 1];
|
int structuringElementValue = structuringElement[j + 1][i + 1];
|
||||||
if (structuringElementValue == 255) {
|
if (structuringElementValue == 255) {
|
||||||
output[(y + j) * width + (x + i)] = 255;
|
image[(y + j) * width + (x + i)] = 255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -189,8 +186,7 @@ void thickening(const unsigned char* image, int width, int height, unsigned char
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funkcja dokonuj¹ca pocieniania
|
void thinning(unsigned char* image, int width, int height) {
|
||||||
void thinning(const unsigned char* image, int width, int height, unsigned char* output) {
|
|
||||||
int structuringElement[3][3] = {
|
int structuringElement[3][3] = {
|
||||||
{0, 255, 0},
|
{0, 255, 0},
|
||||||
{255, 255, 255},
|
{255, 255, 255},
|
||||||
@ -216,7 +212,7 @@ void thinning(const unsigned char* image, int width, int height, unsigned char*
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output[y * width + x] = match ? 255 : 0;
|
image[y * width + x] = match ? 255 : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -571,6 +567,11 @@ int main(int, char**)
|
|||||||
float sigma = 2.0f;
|
float sigma = 2.0f;
|
||||||
bool binary = false;
|
bool binary = false;
|
||||||
bool hough = false;
|
bool hough = false;
|
||||||
|
bool thining = false;
|
||||||
|
bool thick = false;
|
||||||
|
bool hitmiss = false;
|
||||||
|
bool erosi = false;
|
||||||
|
bool dil = false;
|
||||||
|
|
||||||
bool done = false;
|
bool done = false;
|
||||||
|
|
||||||
@ -683,6 +684,26 @@ int main(int, char**)
|
|||||||
{
|
{
|
||||||
hough_transform(image_data, my_image_width, my_image_height, 125, hough_image, my_image_channels);
|
hough_transform(image_data, my_image_width, my_image_height, 125, hough_image, my_image_channels);
|
||||||
}
|
}
|
||||||
|
if (thining)
|
||||||
|
{
|
||||||
|
thinning(image_data, my_image_width, my_image_height);
|
||||||
|
}
|
||||||
|
if (thick)
|
||||||
|
{
|
||||||
|
thickening(image_data, my_image_width, my_image_height);
|
||||||
|
}
|
||||||
|
if (hitmiss)
|
||||||
|
{
|
||||||
|
hitAndMiss(image_data, my_image_width, my_image_height);
|
||||||
|
}
|
||||||
|
if (erosi)
|
||||||
|
{
|
||||||
|
erosion(image_data, my_image_width, my_image_height);
|
||||||
|
}
|
||||||
|
if (dil)
|
||||||
|
{
|
||||||
|
dilation(image_data, my_image_width, my_image_height);
|
||||||
|
}
|
||||||
if (histogram)
|
if (histogram)
|
||||||
{
|
{
|
||||||
ImGui::Begin("Histogram");
|
ImGui::Begin("Histogram");
|
||||||
@ -730,6 +751,13 @@ int main(int, char**)
|
|||||||
ImGui::Begin("Histograms");
|
ImGui::Begin("Histograms");
|
||||||
ImGui::Checkbox("RGB", &histogram);
|
ImGui::Checkbox("RGB", &histogram);
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
ImGui::Begin("Operatory");
|
||||||
|
ImGui::Checkbox("Dylacja", &dil);
|
||||||
|
ImGui::Checkbox("Erozja", &erosi);
|
||||||
|
ImGui::Checkbox("Hit and Miss", &hitmiss);
|
||||||
|
ImGui::Checkbox("Pogrubianie", &thick);
|
||||||
|
ImGui::Checkbox("Thining", &thining);
|
||||||
|
ImGui::End();
|
||||||
ImGui::Begin("Filters");
|
ImGui::Begin("Filters");
|
||||||
ImGui::Checkbox("Negative", &negative);
|
ImGui::Checkbox("Negative", &negative);
|
||||||
ImGui::Checkbox("Sepia", &sepia);
|
ImGui::Checkbox("Sepia", &sepia);
|
||||||
|
Loading…
Reference in New Issue
Block a user