commit 4f0c53087efce8a84c25e6851c22c6d4f3be51ed Author: ssq Date: Sat Apr 25 12:53:13 2026 +0800 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1b68d3d --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# Xmake cache +.xmake/ +build/ +.vscode/ + +# MacOS Cache +.DS_Store + + diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..da93424 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,38 @@ +#include +#include +#include + +int main(int argc, const char* argv[]){ + cv::Mat img = cv::imread("armor.jpg", cv::IMREAD_COLOR); + + if (img.empty()) { + std::cerr << "Failed to load image!" << std::endl; + return -1; + } + + int height = img.rows; // 480 + int width = img.cols; // 720 + + int th = 128; // 亮度阈值 + + cv::Mat out = cv::Mat::zeros(height, width, CV_8UC1); + + for (int j = 0; j < height; j++){ + for (int i = 0; i < width; i++){ + // 注意:OpenCV默认是BGR顺序 + uchar val = (uchar)( + img.at(j,i)[0] * 0.0722 + // B + img.at(j,i)[1] * 0.7152 + // G + img.at(j,i)[2] * 0.2126 // R + ); + + out.at(j,i) = (val < th) ? 0 : 255; + } + } + + cv::imshow("RESULT", out); + cv::waitKey(0); + cv::destroyAllWindows(); + + return 0; +} \ No newline at end of file diff --git a/xmake.lua b/xmake.lua new file mode 100644 index 0000000..c7201d9 --- /dev/null +++ b/xmake.lua @@ -0,0 +1,15 @@ +add_rules("mode.debug", "mode.release") + + + +set_languages("c++11") +set_optimize("faster") + +add_requires("cmake::OpenCV", {alias = "opencv", system = true}) + +set_policy("generator.compile_commands", true) + +target("hello-cv") + set_kind("binary") + add_packages("opencv") + add_files("src/*.cpp") \ No newline at end of file