diff --git a/cs677/pa3/chryseobacterium.bmp b/cs677/pa3/chryseobacterium.bmp new file mode 100644 index 0000000..a62a954 Binary files /dev/null and b/cs677/pa3/chryseobacterium.bmp differ diff --git a/cs677/pa3/edge-detect-display b/cs677/pa3/edge-detect-display new file mode 100755 index 0000000..40df24a --- /dev/null +++ b/cs677/pa3/edge-detect-display @@ -0,0 +1,11 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +my @args = @ARGV; +my $edgesFileName = $args[$#args]; +$edgesFileName =~ s/\.bmp$/-edges.bmp/i; + +system('./edge-detect', @args); +system('display', $edgesFileName); diff --git a/cs677/pa3/edge-detect.cc b/cs677/pa3/edge-detect.cc index 29749c8..88dbe9f 100644 --- a/cs677/pa3/edge-detect.cc +++ b/cs677/pa3/edge-detect.cc @@ -1,18 +1,62 @@ #include #include +#include #include "BMP.h" using namespace std; +void usage(const char * progName) +{ + cout << "Usage: " << progName << " [options] " << endl; + cout << " Options:" << endl; + cout << " -l threshold_level : set threshold level" << endl; + exit(42); +} + int main(int argc, char * argv[]) { - BMP readfrom(argv[1]); - unsigned char * data = new unsigned char[readfrom.getWidth() * readfrom.getHeight() * 3]; - readfrom.read(data); + int argi; + string inputFileName; + string outputFileName; + unsigned int threshold_level = 60; - BMP bmp_create((string(argv[1], strlen(argv[1]) - 4) + "-2.bmp").c_str(), - readfrom.getWidth(), - readfrom.getHeight(), - data); + if (argc < 2) + usage(argv[0]); + + for (argi = 0; argi < argc; argi++) + { + if (!strcmp(argv[argi], "-l")) + { + if (argi >= argc - 1) + usage(argv[0]); + argi++; + threshold_level = atoi(argv[argi]); + } + else + { + inputFileName = argv[argi]; + outputFileName = string(argv[argi], strlen(argv[argi]) - 4); + outputFileName += "-edges.bmp"; + } + } + + + BMP inputImage(inputFileName.c_str()); + unsigned char * data = + new unsigned char[inputImage.getWidth() * inputImage.getHeight() * 3]; + inputImage.read(data); + + unsigned char * data_ptr = data; + for (int i = 0; i < inputImage.getWidth() * inputImage.getHeight(); i++) + { + *data_ptr++ = 0; + *data_ptr++ = 0; + data_ptr++; + } + + BMP edges(outputFileName.c_str(), + inputImage.getWidth(), + inputImage.getHeight(), + data); delete[] data; }