diff --git a/huagao/CMakeLists.txt b/huagao/CMakeLists.txt new file mode 100644 index 00000000..34772fca --- /dev/null +++ b/huagao/CMakeLists.txt @@ -0,0 +1,108 @@ +# CMake 最低版本号要求 +cmake_minimum_required (VERSION 2.8) +project(huagotwainds) +execute_process( + COMMAND git log -1 --format=%H + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_VERSION +) +execute_process( + COMMAND git remote -v + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_REMOTE_PATH +) + +#string (REGEX REPLACE ".*\t| .*" "" GIT_PATH ${GIT_REMOTE_PATH}) +string (REGEX REPLACE "[\n\t\r]" "" GIT_VERSION ${GIT_VERSION}) + +file(GLOB DEV_SRC ${PROJECT_SOURCE_DIR}/Device/*.h ${PROJECT_SOURCE_DIR}/Device/*.cpp) +file(GLOB IMGPROC_SRC ${PROJECT_SOURCE_DIR}/ImageProcess/*.h ${PROJECT_SOURCE_DIR}/ImageProcess/*.cpp) +file(GLOB SRC ${PROJECT_SOURCE_DIR}/*.h ${PROJECT_SOURCE_DIR}/*.cpp) + +aux_source_directory(${PROJECT_SOURCE_DIR} DIR_SRCS) +aux_source_directory(${PROJECT_SOURCE_DIR}/Device DIR_DEVICE) +aux_source_directory(${PROJECT_SOURCE_DIR}/ImageProcess DIR_IMGPROC) + +set(DIR_RC huagaotwds.rc) +source_group("RC Files" FILES ${DIR_RC}) + +include_directories( +${PROJECT_SOURCE_DIR} +${PROJECT_SOURCE_DIR}/.. +${PROJECT_SOURCE_DIR}/../twpp +${PROJECT_SOURCE_DIR}/../3rdparty/nick +${PROJECT_SOURCE_DIR}/../3rdparty/libtiff/include +${PROJECT_SOURCE_DIR}/../3rdparty/gpdf/ +${PROJECT_SOURCE_DIR}/../3rdparty/opencv/include +) + +message($ENV{windir}) + +link_directories(${PROJECT_SOURCE_DIR}/../3rdparty/opencv/x86/staticlib/ +${PROJECT_SOURCE_DIR}/../3rdparty/libtiff/ +${PROJECT_SOURCE_DIR}/../3rdparty/gpdf/x86/staticlib/ +${PROJECT_SOURCE_DIR}/../3rdparty/gpdf/3rdparty/tesseract/staticlib/x86/) + +MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}") + +MACRO(RW_LINK_3RD_PART_LIBRARY FULL_LIBRARY_NAME) +link_libraries(optimized ${FULL_LIBRARY_NAME}) +link_libraries(debug ${FULL_LIBRARY_NAME}d) +ENDMACRO() + +IF (CMAKE_SYSTEM_NAME MATCHES "Linux") + MESSAGE(STATUS "current platform: Linux ") +ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows") + link_libraries(hg_gpdf) + link_libraries(cvblob) + link_libraries(libjpeg) + RW_LINK_3RD_PART_LIBRARY(opencv_core343) + RW_LINK_3RD_PART_LIBRARY(opencv_highgui343) + RW_LINK_3RD_PART_LIBRARY(opencv_imgcodecs343) + RW_LINK_3RD_PART_LIBRARY(opencv_imgproc343) + RW_LINK_3RD_PART_LIBRARY(IlmImf) + RW_LINK_3RD_PART_LIBRARY(libjasper) + RW_LINK_3RD_PART_LIBRARY(libjpeg-turbo) + RW_LINK_3RD_PART_LIBRARY(libpng) + RW_LINK_3RD_PART_LIBRARY(libtiff) + RW_LINK_3RD_PART_LIBRARY(libwebp) + RW_LINK_3RD_PART_LIBRARY(zlib) + RW_LINK_3RD_PART_LIBRARY(ittnotify) + link_libraries(libwebp) + link_libraries(libleptonica) + link_libraries(libprotobuf) + link_libraries(quirc) + link_libraries(tesseract_api) + link_libraries(tesseract_arch) + link_libraries(tesseract_ccmain) + link_libraries(tesseract_ccstruct) + link_libraries(tesseract_ccutil) + link_libraries(tesseract_classify) + link_libraries(tesseract_cutil) + link_libraries(tesseract_dict) + link_libraries(tesseract_lstm) + link_libraries(tesseract_opencl) + link_libraries(tesseract_textord) + link_libraries(tesseract_viewer) + link_libraries(tesseract_wordrec) + MESSAGE(STATUS "current platform: Windows") +ELSEIF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + MESSAGE(STATUS "current platform: FreeBSD") +ELSE () + MESSAGE(STATUS "other platform: ${CMAKE_SYSTEM_NAME}") +ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux") + +add_definitions(-DTWPP_IS_DS -D_CRT_SECURE_NO_WARNINGS -D_DIRECT_BUILD -D_NOT_USE -D_AFXDLL -D_UNICODE -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_CRT_NON_CONFORMING_SWPRINTFS -D_WIN32) +add_definitions(-DGIT_VERSION=\"${GIT_VERSION}\") + + +# 指定生成目标 +add_library(huagaotwain SHARED ${DIR_SRCS} ${PROJECT_SOURCE_DIR}/exports.def ${DEV_SRC} ${IMGPROC_SRC} ${SRC} ${DIR_RC}) +#target_link_libraries(huagaotwain PRIVATE Qt5::Widgets ${Qt5_STATIC_LINK_LIBRARIES} gdev gimgproc) +#target_link_directories(huagaotwain PRIVATE ${Qt5_STATIC_LINK_DIR}) + +set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/redistribute) + +set(huagaotwain_path "$<$:${LIBRARY_OUTPUT_PATH}\\Debug\\huagaotwain.dll>" "$<$:${LIBRARY_OUTPUT_PATH}\\Release\\huagaotwain.dll>") +string(REPLACE "/" "\\" huagaotwain_path ${huagaotwain_path}) +add_custom_command(TARGET huagaotwain POST_BUILD COMMAND copy ${huagaotwain_path} $ENV{windir}\\twain_32\\huagoscan\\huagaotwain.ds) \ No newline at end of file diff --git a/huagao/Device/GScanO200.cpp b/huagao/Device/GScanO200.cpp index 1e44aef5..fa0ae520 100644 --- a/huagao/Device/GScanO200.cpp +++ b/huagao/Device/GScanO200.cpp @@ -4,7 +4,6 @@ #include "UsbScanEx.h" #include "StopWatch.h" #include "scn_config.h" -#include "JpegBuffer.h" #include "ImageMatQueue.h" #include "filetools.h" #include "GetMemoryUsage.h" @@ -176,7 +175,7 @@ void GScanO200::open(int vid, int pid) ipid = 0x0100; #else ivid = 0x3072; - ipid = 0x0200; + ipid = 0x0100; #endif // ISG100 #elif defined(G300) diff --git a/huagao/Device/JpegBuffer.cpp b/huagao/Device/JpegBuffer.cpp deleted file mode 100644 index 88d1daa2..00000000 --- a/huagao/Device/JpegBuffer.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "StdAfx.h" -#include "JpegBuffer.h" -#include "jpeglib.h" - -using namespace std; - -JpegBuffer::JpegBuffer(cv::Mat buffer, int color_type,int side,int mFilter) -{ - this->m_buffer = buffer; - this->m_color_type=color_type; - this->m_side=side; - this->m_mFilter=mFilter; -} - -JpegBuffer::JpegBuffer(std::vector mats, int color_type, int mFilter) -{ - matdatas = mats; - this->m_color_type = color_type; - this->m_mFilter = mFilter; -} - -JpegBuffer::JpegBuffer() -{ - this->m_buffer = cv::Mat(); - this->m_color_type = 2; - this->m_side = 0; - this->m_mFilter = 0; -} - - -JpegBuffer::~JpegBuffer(void) -{ -} - - -unsigned char* JpegBuffer::getBuffer() -{ - return m_buffer.data; -} - -cv::Mat JpegBuffer::buffer() -{ - return m_buffer; -} - -int JpegBuffer::getSize() -{ - return m_buffer.cols; -} - - -cv::Mat JpegBuffer::getMat( int pixType) -{ - JpegLib jl; - cv::Mat image = jl.decode(m_buffer, pixType); - return image.clone(); -} - -std::vector JpegBuffer::getMats() -{ - std::vector retmats; - for (int i = 0; i < matdatas.size(); i++) - { - JpegLib jl; - cv::Mat image = jl.decode(matdatas[i], m_color_type); - retmats.push_back(image.clone()); - image.release(); - } - return retmats; -} - -int JpegBuffer::getMFilter() -{ - return m_mFilter; -} - -int JpegBuffer::getSide() -{ - return m_side; -} - -bool JpegBuffer::empty() -{ - return matdatas.empty(); -} diff --git a/huagao/Device/JpegBuffer.h b/huagao/Device/JpegBuffer.h deleted file mode 100644 index d4d95645..00000000 --- a/huagao/Device/JpegBuffer.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once -#include - -class JpegBuffer -{ -public: - JpegBuffer(cv::Mat buffer,int color_type=6,int side=0,int mFilter=0); - JpegBuffer(std::vector mats, int color_type = 6,int mFilter = 0); - JpegBuffer(); - virtual ~JpegBuffer(void); - - unsigned char* getBuffer(); - cv::Mat buffer(); - int getSize(); - cv::Mat getMat( int pixType); - std::vector getMats(); - int getMFilter(); - int getSide(); - bool empty(); - -private: - cv::Mat m_buffer; - std::vector matdatas; - int m_color_type; - int m_side; - int m_mFilter; -}; diff --git a/huagao/Device/jpeglib.cpp b/huagao/Device/jpeglib.cpp deleted file mode 100644 index 75c5b13f..00000000 --- a/huagao/Device/jpeglib.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include "stdafx.h" -#include "jpeglib.h" - -JpegLib::JpegLib() : -img_buffer(NULL), sizeBuffer(0) -{ - handle = std::shared_ptr (tjInitDecompress(),tjDestroy); -} - -JpegLib::~JpegLib() -{ - clear(); -} - -void JpegLib::clear() -{ - img_buffer.reset(); - sizeBuffer = 0; -} - -cv::Mat JpegLib::decode(cv::Mat buf, int pixelFormat) -{ - if(buf.rows != 1) - return cv::Mat(); - - decode(buf.data, buf.cols, pixelFormat); - - return cv::Mat(getHeight(), getWidth() , pixelFormat == TJPF_BGR ? CV_8UC3 : CV_8UC1, getData()); -} - -void JpegLib::decode(unsigned char* buff, unsigned long buff_size, int pixelFormat) -{ - tjDecompressHeader(handle.get(), buff, buff_size, &width, &height); - int size = width * height *tjPixelSize[pixelFormat]; - - if (sizeBuffer != size) - { - clear(); - img_buffer = std::shared_ptr(tjAlloc(size), tjFree); - sizeBuffer = size; - } - - if (img_buffer) - { - tjDecompress2(handle.get(), buff, buff_size, img_buffer.get(), width, 0, height, pixelFormat, 0); - } -} - -int JpegLib::getWidth() -{ - return width; -} - -int JpegLib::getHeight() -{ - return height; -} - -int JpegLib::getBufferSize() -{ - return sizeBuffer; -} - -unsigned char* JpegLib::getData() -{ - return img_buffer.get(); -} \ No newline at end of file diff --git a/huagao/Device/jpeglib.h b/huagao/Device/jpeglib.h deleted file mode 100644 index c70a4d2d..00000000 --- a/huagao/Device/jpeglib.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once -#include "turbojpeg.h" -#include -#include - -class JpegLib -{ -public: - JpegLib(); - ~JpegLib(); - - void clear(); - cv::Mat decode(cv::Mat buf, int pixelFormat); - void decode(unsigned char* buff, unsigned long buff_size, int pixelFormat); - int getWidth(); - int getHeight(); - int getBufferSize(); - unsigned char* getData(); - -private: - std::shared_ptr handle; - std::shared_ptr img_buffer; - int sizeBuffer; - int width; - int height; -};