diff --git a/src/MaaCore/Controller/AdbController.cpp b/src/MaaCore/Controller/AdbController.cpp index e6b34d3276..593132f823 100644 --- a/src/MaaCore/Controller/AdbController.cpp +++ b/src/MaaCore/Controller/AdbController.cpp @@ -182,7 +182,6 @@ void asst::AdbController::clear_info() noexcept m_width = 0; m_height = 0; m_screen_size = { 0, 0 }; - m_screencap_data_general_size = 0; } bool asst::AdbController::inited() const noexcept @@ -368,7 +367,12 @@ bool asst::AdbController::screencap(cv::Mat& image_payload, bool allow_reconnect if (temp.empty()) { return false; } - cv::cvtColor(temp, temp, cv::COLOR_RGB2BGR); + std::vector channels; + cv::split(temp, channels); + if (cv::countNonZero(channels[3] != 255) != 0) { + return false; + } + cv::cvtColor(temp, temp, cv::COLOR_RGBA2BGR); image_payload = temp; return true; }; @@ -476,10 +480,6 @@ bool asst::AdbController::screencap(const std::string& cmd, const DecodeFunc& de return false; } auto& data = ret.value(); - if (m_screencap_data_general_size && data.size() < m_screencap_data_general_size * 0.1) { - Log.warn("data is too small!"); - // return false; - } bool tried_conversion = false; if (m_adb.screencap_end_of_line == AdbProperty::ScreencapEndOfLine::CRLF) { @@ -522,7 +522,6 @@ bool asst::AdbController::screencap(const std::string& cmd, const DecodeFunc& de } m_adb.screencap_end_of_line = AdbProperty::ScreencapEndOfLine::CRLF; } - m_screencap_data_general_size = data.size(); return true; } diff --git a/src/MaaCore/Controller/AdbController.h b/src/MaaCore/Controller/AdbController.h index d3c2cf2ec4..64a329a134 100644 --- a/src/MaaCore/Controller/AdbController.h +++ b/src/MaaCore/Controller/AdbController.h @@ -126,7 +126,6 @@ namespace asst bool m_support_socket = false; bool m_server_started = false; bool m_inited = false; - size_t m_screencap_data_general_size = 0; inline static int m_instance_count = 0; }; diff --git a/src/MaaCore/Controller/PlayToolsController.cpp b/src/MaaCore/Controller/PlayToolsController.cpp index ea009e6abc..ab0476e698 100644 --- a/src/MaaCore/Controller/PlayToolsController.cpp +++ b/src/MaaCore/Controller/PlayToolsController.cpp @@ -111,7 +111,7 @@ bool asst::PlayToolsController::screencap(cv::Mat& image_payload, bool allow_rec std::vector buffer(image_size); asio::read(m_socket, asio::buffer(buffer, image_size)); image_payload = cv::Mat(m_screen_size.second, m_screen_size.first, CV_8UC4, buffer.data()); - cv::cvtColor(image_payload, image_payload, cv::COLOR_RGB2BGR); + cv::cvtColor(image_payload, image_payload, cv::COLOR_RGBA2BGR); } catch (const std::exception& e) { Log.error("Cannot get screencap:", e.what());