From 5eb5aa60e184dc87fc40fff273f75c064d0e0db0 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Thu, 29 Sep 2022 09:34:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=81=B0=E5=BA=A6=E8=BD=AC?= =?UTF-8?q?=E9=BB=91=E7=99=BD=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/image_process.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/hgdriver/hgdev/image_process.cpp b/hgdriver/hgdev/image_process.cpp index 0e791bd..091471b 100644 --- a/hgdriver/hgdev/image_process.cpp +++ b/hgdriver/hgdev/image_process.cpp @@ -971,19 +971,29 @@ namespace hg_imgproc memset(tableData, reverse ? 0 : 1, 256); memset(tableData, reverse ? 1 : 0, threshold); - cv::Mat dst = cv::Mat::zeros(rows, cols, (int)CV_8UC1); + int* index_dst = new int[image.cols]; + int* index_carry = new int[image.cols]; + + for (size_t i = 0; i < image.cols; i++) + { + index_dst[i] = i / 8; + index_carry[i] = 7 - (i % 8); + } + + cv::Mat dst = cv::Mat::zeros(rows, cols, CV_8UC1); uchar* ptr_src, * ptr_dst; for (size_t y = 0; y < rows; y++) { ptr_dst = dst.ptr(y); ptr_src = const_cast(image.ptr(y)); for (size_t x = 0; x < image.cols; x++) - ptr_dst[x / 8] += tableData[ptr_src[x]] << (x % 8); + ptr_dst[index_dst[x]] += tableData[ptr_src[x]] << index_carry[x]; } + delete[] index_dst; + delete[] index_carry; return dst; } - // final public: int final(void) @@ -1540,9 +1550,9 @@ namespace hg_imgproc cv::Mat bw = imgproc::convert_8bit_2_1bit(m, threshold, reverse, align); //std::string ret(""); - dst = bw.ptr(); - for (int i = 0; i < bw.total(); ++i) - dst[i] = reverse_bit(dst[i]); + //dst = bw.ptr(); + //for (int i = 0; i < bw.total(); ++i) + // dst[i] = reverse_bit(dst[i]); return std::string((char*)bw.ptr(), bw.total()); }