一、概述
已知分块后图像的分块个数,对图像进行分块。
二、代码实现
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace std;
// 已知分块个数,进行图像分块
void ImageBlock(const cv::Mat& src, int segRow, int seCol)
{
int segHeight = src.rows / segRow; // 分块高度
int segWidth = src.cols / seCol; // 分块宽度
cv::Mat roiImg;
for (int i = 0; i < segRow; ++i)
{
for (int j = 0; j < seCol; ++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("CG.jpg");
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;
}