From: Skullheadx Date: Wed, 20 Nov 2024 23:19:29 +0000 (-0500) Subject: first 20 codewords extracted X-Git-Url: http://git.skullheadx.com/nixos/README?a=commitdiff_plain;h=bf0a4673674c3da9b17272f04891985208f65229;p=qrcodescanner.git first 20 codewords extracted --- diff --git a/camera.cpp b/camera.cpp index e87d8ea..4cb3e34 100644 --- a/camera.cpp +++ b/camera.cpp @@ -8,9 +8,11 @@ void print(std::vector> &symbol); void vec_xor(std::vector &v1, const std::vector v2); unsigned int distance(std::vector &v1, const std::vector &v2); void read_words_from_file(char const *filename, std::vector> &symbol); +void retrieve_codewords(std::vector> &symbol, std::vector &codewords, bool is_upwards, std::size_t row, std::size_t col); std::vector get_format_info(std::vector> &symbol); void decode_mask(std::vector> &symbol, std::size_t mask_pattern); +std::vector get_codewords_from_symbol(std::vector> &symbol); int main(){ std::vector> symbol(21, std::vector(21,0)); @@ -29,6 +31,8 @@ int main(){ print(symbol); + std::vector codewords = get_codewords_from_symbol(symbol); + print(codewords); return 0; } @@ -191,6 +195,122 @@ void decode_mask(std::vector> &symbol, std::size_t mask_patter } } } +void retrieve_codewords(std::vector> &symbol, std::vector &codewords, bool is_upwards, unsigned int row, unsigned int col){ + if (is_upwards){ + for (unsigned int r{row + 3}; r >= row; --r){ + for (unsigned int c{col + 1}; c >= col; --c){ + //std::cout << r << ' ' << c << std::endl; + codewords.push_back(symbol[r][c]); + } + } + } + else { + for (unsigned int r{row}; r <= row + 3; ++r){ + for (unsigned int c{col + 1}; c >= col; --c){ + //std::cout << r << ' ' << c << std::endl; + codewords.push_back(symbol[r][c]); + } + } + } +} + +std::vector get_codewords_from_symbol(std::vector> &symbol){ + std::vector codewords{}; + unsigned int c{}, r{}; + // refer to codewords by their top left corner + + for (c = 19, r = 17;c >= 13; c-=2){ + for (r = 17;r >= 21 - 3 * 4;r-=4){ + retrieve_codewords(symbol, codewords, true, r, c); + } + c -= 2; + for (r = 9;r < 20; r+=4){ + retrieve_codewords(symbol, codewords, false, r, c); + } + } + + for (r = 17;r >= 21 - 3 * 4;r-=4){ + retrieve_codewords(symbol, codewords, true, r, c); + } + std::cout << r << ' ' << c << std::endl; +/* + // up special + std::vector character_symbol_special1(codeword_message.begin() + codeword_counter * 8, codeword_message.begin() + (codeword_counter + 1) * 8); + codeword_counter++; + //for (auto i : character_symbol_special1) {std::cout << i;}std::cout<