Image printing with dithering working--need to actually implement proper timing of transmission (just waiting a second for each line right now)

This commit is contained in:
Griffin Della Grotte 2017-07-07 23:03:33 -04:00
parent 22f466c22e
commit 6f03abf72e
3 changed files with 11 additions and 6 deletions

View File

@ -1,3 +1,3 @@
all: all:
g++ printtxt.cpp -o printtxt 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`

Binary file not shown.

View File

@ -11,6 +11,8 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "dither.h"
#define CHAR_HEIGHT 8 #define CHAR_HEIGHT 8
#define DOT_WIDTH 720 #define DOT_WIDTH 720
#define HW_RATIO 1.35 #define HW_RATIO 1.35
@ -104,7 +106,7 @@ void print_buffer(int iw, char *buf, size_t len){
write(iw, seg, amnt); write(iw, seg, amnt);
i += 250; i += 250;
//printf("Done segment!\n"); //printf("Done segment!\n");
usleep(990000); //Don't overfill buffer usleep(200000); //Don't overfill buffer
} }
write(iw, "\n\r", 2); write(iw, "\n\r", 2);
@ -144,7 +146,9 @@ Mat load_img(char * filename){
cout << "Could not open or find the image" << std::endl ; 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){ void print_section(int iw, Mat sec){
@ -165,6 +169,7 @@ void print_section(int iw, Mat sec){
} }
write(iw, line, sec.cols); write(iw, line, sec.cols);
usleep(1000000);
free(line); free(line);
} }
@ -190,12 +195,12 @@ int main(int argc, char *argv[]){
int iw = init_port(portname); int iw = init_port(portname);
Mat image = load_img(argv[1]); 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 xScale = (pg_factor * DOT_WIDTH) / ((float)image.cols);
float yScale = xScale / HW_RATIO; float yScale = xScale / HW_RATIO;
resize(image, image, Size(), xScale, yScale); resize(image, image, Size(), xScale, yScale);
cvtColor(image, image, COLOR_RGB2GRAY); //cvtColor(image, image, COLOR_RGB2GRAY);
threshold(image, image, 127, 255, THRESH_BINARY); //threshold(image, image, 127, 255, THRESH_BINARY);
print_img(iw, image); print_img(iw, image);
//namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display. //namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.