OpenCV实践篇--图像分割(附代码)

对OpenCV使用的日常总结

一、明确目标

可对目标图像进行任意分块

二、实践环境

  • Ubuntu 18.04
  • OpenCV 3.3
  • CMake 3.16.9

三、代码实现

首先创建一个文件夹,在里面进行以下操作

  • 创建源文件 txfg.cpp
#include 
#include 
#include 

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
    OpenCV实践篇--图像分割(附代码)_第1张图片

四、效果展示

OpenCV实践篇--图像分割(附代码)_第2张图片

OpenCV实践篇--图像分割(附代码)_第3张图片
大功告成了!!!

你可能感兴趣的:(C++,opencv,计算机视觉,c++)