对OpenCV使用的日常总结
一、明确目标
可对目标图像进行任意分块
二、实践环境
- Ubuntu 18.04
- OpenCV 3.3
- CMake 3.16.9
三、代码实现
首先创建一个文件夹,在里面进行以下操作
- 创建源文件 txfg.cpp
#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std; // 输入分块个数,进行图像分块 void ImageBlock(const cv::Mat& src, int segRow, int seLine) { int segHeight = src.rows / segRow; // 分块高度 int segWidth = src.cols / seLine; // 分块宽度 cv::Mat roiImg; for (int i = 0; i < segRow; ++i) { for (int j = 0; j < seLine; ++j) { cv::Rect rect(j * segWidth, i * segHeight, segWidth, segHeight); src(rect).copyTo(roiImg); std::string str = std::to_string(i) + std::to_string(j); imwrite(str + "_block.png", roiImg); imshow(str, roiImg); } } } int main() { cv::Mat img = cv::imread("../girl.png"); if (img.empty()) { cout << "请确认图像文件名称是否正确" << endl; return -1; } imshow("img", img); cv::waitKey(0); int m = 2; int n = 2; ImageBlock(img, m, n); // 分块 cv::waitKey(0); return 0; }
讯享网
- 需要使用CMake工具链,故创建CMakeLists.txt
讯享网#声明要求的cmake版本 cmake_minimum_required(VERSION 2.8) #声明一个cmake工程 project(txfg) #CMake配置C++11编译标准 set(CMAKE_CXX_FLAGS "-std=c++11") #寻找OpenCV库 find_package(OpenCV 3 REQUIRED) #添加头文件 include_directories( ${OpenCV_INCLUDE_DIRS} ) #添加一个可执行程序 add_executable(程序名 源代码文件名) add_executable(txfg txfg.cpp) #链接到库函数(可执行文件 被链接的库函数) target_link_libraries(txfg ${OpenCV_LIBS})
- 编译运行
创建build 文件夹:mkdir build
进入build 文件夹: cd /build
终端输入 :cmake … (预编译)
终端继续输入:make (编译)
输入:./txfg

讯享网
四、效果展示
前


后

大功告成了!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/27683.html