From 6f03abf72ee27fad8f4a15580842322876b81594 Mon Sep 17 00:00:00 2001 From: Griffin Della Grotte Date: Fri, 7 Jul 2017 23:03:33 -0400 Subject: [PATCH] Image printing with dithering working--need to actually implement proper timing of transmission (just waiting a second for each line right now) --- DirectPrint/Makefile | 2 +- DirectPrint/printimg | Bin 64080 -> 64120 bytes DirectPrint/printimg.cpp | 15 ++++++++++----- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/DirectPrint/Makefile b/DirectPrint/Makefile index ff9c537..31f35ae 100644 --- a/DirectPrint/Makefile +++ b/DirectPrint/Makefile @@ -1,3 +1,3 @@ all: g++ printtxt.cpp -o printtxt - g++ printimg.cpp -o printimg `pkg-config --cflags --libs opencv` + g++ printimg.cpp dither.cpp -o printimg `pkg-config --cflags --libs opencv` diff --git a/DirectPrint/printimg b/DirectPrint/printimg index cbfab2627aae4b453462e1ee3fbb0ef07e391ad9..45aef1ed4cec36a8ff6a8dca74b5df60aff3b252 100755 GIT binary patch literal 64120 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 literal 64080 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 g8US1OM*T1Gllr$?{zsnFa;rHG=#;K2IVbpk0K #include +#include "dither.h" + #define CHAR_HEIGHT 8 #define DOT_WIDTH 720 #define HW_RATIO 1.35 @@ -104,7 +106,7 @@ void print_buffer(int iw, char *buf, size_t len){ write(iw, seg, amnt); i += 250; //printf("Done segment!\n"); - usleep(990000); //Don't overfill buffer + usleep(200000); //Don't overfill buffer } write(iw, "\n\r", 2); @@ -144,7 +146,9 @@ Mat load_img(char * filename){ cout << "Could not open or find the image" << std::endl ; } - return image; + Mat dith = dither_image(image); + + return dith; } void print_section(int iw, Mat sec){ @@ -165,6 +169,7 @@ void print_section(int iw, Mat sec){ } write(iw, line, sec.cols); + usleep(1000000); free(line); } @@ -190,12 +195,12 @@ int main(int argc, char *argv[]){ int iw = init_port(portname); Mat image = load_img(argv[1]); - float pg_factor = 0.25; + float pg_factor = 0.75; float xScale = (pg_factor * DOT_WIDTH) / ((float)image.cols); float yScale = xScale / HW_RATIO; resize(image, image, Size(), xScale, yScale); - cvtColor(image, image, COLOR_RGB2GRAY); - threshold(image, image, 127, 255, THRESH_BINARY); + //cvtColor(image, image, COLOR_RGB2GRAY); + //threshold(image, image, 127, 255, THRESH_BINARY); print_img(iw, image); //namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.