本文将使用opencv c++ 制作九宫格图像。其实原理很简单,就是将一张图像均等分成九份。然后将这九个小块按一定间隔(九宫格效果)拷贝到新画布上就可以啦。
原图如图所示。本案例的需求是希望将图像均等分成九份,制作九宫格图像。首先得将原图均等分成九份。
如图所示。将原图均等分成九份,然后将这每一个小方块按照一定的间隔(九宫格效果)拷贝到新图像就可以了。具体算法思想请看源码注释。
#include<iostream>#inclu艺术生文化课辅导de<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){mat src = imread("test.jpg");if (src.empty()){cout << "no image!" << endl;system("pau");return -1;}//原图宽高int width = src.cols;int height = src.rows;int num = 3;//小方块数量(可实教师党员自我评价现任意等份分割)//制作九宫格每个小方块宽高int step_x = width / num;int step_y = height / num;//重新resize图片尺寸resize(src, src, size(step_x * num, step_y * num), 1, 1, inter_linear);int space = 5; //空白间隔(实现九宫格效果)mat canvas = mat(size(src.cols + space * (num-1), src.rows + space * (num - 1)), cv_8uc3, scalar(255,255,255)); //画布,用来制作九宫格传承传统文化图片//就图片分成9个小块,将每一小块抠图至画布for (小数四则混合运算int i = 0; i < num; i++){for (int j = 0; j < num; j++){//小方块相对于原图左上角起点int x = j * step_x;int y = i * step_y;//将小方块抠图至画布。其中,每扣一小块需跳过space空白src(rect(x, y, step_x, step_y)).copyto(canvas(rect(x + space * j, y + space * i, step_x, step_y)));//rectangle(src, rect(x, y, step_x, step_y), scalar(0, 255, 0), 2);}}imshow("canvas", canvas);imshow("test", src);waitkey(0);system("pau");return 0;}
如图为生成的九宫格图像。
如图为任意等份分割。
本文使用opencv c++ 制作九宫格图像,关键步骤有以下几点。
1、将原图均等妈妈的微笑分成九个小方块
2、将小方块按一定的间隔(九宫格效果)拷贝到新画布上。
到此这篇关于c++ opencv实战之制作九宫格图像的文章就介绍到这了,更多相关c++ opencv九宫格图像内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 13:42:49,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/94f7de16e23cc569b476cf3c35ad7859.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C++ OpenCV实战之制作九宫格图像.doc
本文 PDF 下载地址:C++ OpenCV实战之制作九宫格图像.pdf
留言与评论(共有 0 条评论) |