OpenCV入门教程(9)- 图片按照对角线分割
来源:互联网 发布:js 获取滚动条位置 编辑:程序博客网 时间:2024/05/24 06:53
最近在学习OpenCV,在网上看到@星沉阁冰不语的博客,里面有一篇文章讲解方形图片按对角线分割,但是没有实现矩形图片的分割。作为学习的巩固,实现以巩固之。
代码是在其基础之上修改的,在此谢谢@星沉阁冰不语。下面我们开始看代码,一些讲解直接注释在代码里了。
#include <QCoreApplication>#include <iostream>#include <cstdlib>#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"using namespace std;using namespace cv;int main(){ // 读取要处理的图像文件 Mat src = imread("lyc.jpg", -1); if(src.empty()) { cout << "Can not load image." << endl; return -1; } Mat dst1(src.rows, src.cols, CV_8UC3,Scalar::all(0)); Mat dst2(src.rows, src.cols, CV_8UC3,Scalar::all(0)); int x = src.rows; int y = src.cols; float slope = (float)y / (float)x; for (int i = 0; i < src.rows; i++) { Vec3b *p = src.ptr<Vec3b>(i); Vec3b *p1 = dst1.ptr<Vec3b>(i); Vec3b *p2 = dst2.ptr<Vec3b>(i); // 寻找列元素的起始位置 // 根据图片的斜率,确定列元素是从第几个像素开始。 float tmp = (float)i; tmp = tmp * slope -(int)(tmp * slope); int m = 0; if(tmp >= 0.5) m = (int)(i * slope) + 1; else m = (int)(i * slope); for (int j = m; j < src.cols; j++) { p1[j] = p[j]; } for (int k = 0; k < m; k++) { p2[k] = p[k]; } } Point a = Point(0, 0); Point b = Point(src.cols, src.rows); line(src, a, b, Scalar(255, 255, 0),1); imshow("src", src); imshow("dst1", dst1); imshow("dst2", dst2); waitKey(0); return 0;}
该代码使用指针进行像素矩阵的操作,效率必at()函数和迭代函数要高。
源图片如下,像素是500*375:
分割后,对角线上面图像为:
分割后,对角线下面图像为:
欢迎大家指正!
0 0
- OpenCV入门教程(9)- 图片按照对角线分割
- OpenCV实践之路——矩形图片的对角线分割
- OpenCV实践之路——矩形图片的对角线分割
- OpenCV实践之路——方形图片对角线切割
- OpenCV实践之路——方形图片对角线切割
- opencv 入门教程(转载)
- 图片中的字符分割提取(基于opencv)
- python+opencv图片旋转矩形分割
- 文件分割 按照段落
- 按照字节分割字符串
- 按照百分比分割页面
- 《opencv入门教程》(迭代器遍历)
- 《Opencv 入门教程》
- 《opencv入门教程》
- 《opencv 入门教程》
- 使用OpenCV把视屏分割成图片
- 【opencv小应用】图片中的字符分割提取
- 【OpenCV】一种基于阈值的图片中的文字分割
- 虚拟内存
- 8大排序算法动态图文讲解
- 'webpack/lib/node/NodeTemplatePlugin' 错误解决
- Laravel路由
- web GIS
- OpenCV入门教程(9)- 图片按照对角线分割
- 自己实现myprintf函数
- 25.常量
- Html初学资料
- 我的第一个python爬虫脚本
- java,相差天数
- golang recover from panic situation: - reflect: call of reflect.Value.Elem on struct Value
- 计算机思维--0和1与逻辑
- 打安卓包,更换包名 的 三个 关键点