opencv隔点采样(下采样)
1、先验知识
对灰度图像来说,img.step[0]代表图像一行的的长度:img.step[0]=img.cols;
img.step[1]代表图像一个元素的数据大小:img.step[0]=img.channels() ;
img.data: uchar的指针,指向Mat数据矩阵的首地址。
2、验证:通过地址访问元素
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include<vector>
#include<Eigen/Core>
#include <corecrt_math_defines.h>
using namespace std;
using namespace cv;int main()
{//生成一个3*4的矩阵Mat M = Mat::eye(3,4,CV_8UC1);cout << "M=\n" << M << endl;//访问第1行第1列的元素double sample11 = *(M.data+M.step[0]*0+M.step[1]*0);cout << "(1,1)=" << sample11 << endl;//访问第2行第2列的元素double sample22 = *(M.data+M.step[0]*1+M.step[1]*1);cout << "(2,2)=" << sample22 << endl;cout << "M.step[0]="<<M.step[0] << endl;cout << "M.step[1]="<<M.step[1] << endl;cv::waitKey(0);return 0;
}
3、隔点采样
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include<vector>
#include<Eigen/Core>
#include <corecrt_math_defines.h>
using namespace std;
using namespace cv;
#include "sift.h";Mat downSample(Mat src)
{Mat dst;if (src.channels() != 1)return src;if (src.cols <= 1 || src.rows <= 1){src.copyTo(dst);return dst;}dst.create((int)(src.rows / 2), (int)(src.cols / 2), src.type());cout << "-- " << dst.rows << " " << dst.cols << " --" << endl;int m = 0, n = 0;for (int i = 0; i < src.rows; i += 2, m++){n = 0;for (int j = 0; j < src.cols; j += 2, n++){//地址=首地址+cols*i+1*jdouble sample = *(src.data + src.step[0] * i + src.step[1] * j);//防止当图像长宽不一致时,长宽为奇数时,m,n越界if (m < dst.rows && n < dst.cols){*(dst.data + dst.step[0] * m + dst.step[1] * n) = sample;}}}return dst;
}int main()
{double time0 = static_cast<double>(getTickCount());//记录起始时间Mat img = imread("D:\\VC\\c++\\opencv源码\\opencv源码\\Stereo_Sample\\ImageL1.jpg", IMREAD_GRAYSCALE);if (img.empty()){cout << "读取图像错误!" << endl;return 0;}siftLou k;Mat dst;dst = downSample(img);dst = downSample(dst);dst = downSample(dst);namedWindow("dst", WINDOW_FREERATIO);namedWindow("src", WINDOW_FREERATIO);imshow("dst", dst);imshow("src", img);cout << img.size() << endl;cout << dst.size() << endl;cout << "img.step[0]="<<img.step[0] << endl;cout << "img.step[1]=" << img.step[1] << endl;cout << "此方法运行时间:" << time0 << "秒" << endl;//输出运行时间cv::waitKey(0);return 0;
}
opencv隔点采样(下采样)相关推荐
- 深度学习上采样下采样概念以及实现
#pic_center =400x 系列文章: 文章目录 参考博客 概念 上采样 下采样 实现 上采样 下采样 参考博客 [深度学习]上采样,下采样,卷积 torch.nn.functional.in ...
- 过采样与欠采样图像重采样(上采样下采样)
参考文章: https://blog.csdn.net/majinlei121/article/details/46742339 https://blog.csdn.net/Chaolei3/arti ...
- 重采样 上采样 下采样
重采样的原理: 重采样主要是分为上采样和下采样,在进行采样的过程中,需要注意采样的倍率的问题,并不是可以随意的改变采样率的大小的,根据采样定理:在进行模拟/数字信号的转换过程中,当采样频率fs.max ...
- 卷积 反卷积 上采样 下采样 区别
1.卷积 就是利用卷积核 步长前进 卷积整个图片 2.反卷积 反卷积的具体操作 原图输入尺寸为[1,3,3,3]对应[batch_size,channels,width,height] 反卷积tco ...
- 降采样,下采样,池化
概念 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1.使得图像符合显示区域的大小:2.生成对应图像的缩略图. 放大图像(或称为上采样(upsam ...
- python下采样_python + opencv 如何在上采样下采样之后导出图片?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import cv2 def pyramid_demo(image): level = 3 temp = image.copy() pyramid_ima ...
- 下采样downsample代码
针对二分类表格数据任务 [1]代码如下: def df_train(df_train):number_records_fraud = len(df_train[df_train.isFraud == ...
- python 下采样和上采样
前言 由于工作数据量较大,训练模型很少直接单机python,一般都采用SparkML,最近把SparkML的工作使用python简单的写了一下,先写个上下采样,最终目的是为了让正负样本达到均衡(有人问 ...
- 彻底分清机器学习中的上采样、下采样、过采样、欠采样【总结】
今天看了篇中文的硕士论文,读着读着感觉有点奇怪,仔细一看原来他把下采样和欠采样搞混了,这里笔者就详细区分一下各个名称的概念. 文章目录 1. 上采样&下采样 2.过采样&欠采样 3.信 ...
最新文章
- Ubuntu10下MySQL搭建Amoeba_读写分离
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
- C++ code:string stream(string流)学习大全
- 袁隆平杂交水稻创新团队发布“农业芯片”,世界顶级科学家点赞拼多多新农人...
- 男子拒绝春节带电脑回家工作被开除,最后结果十分舒适...
- Mount挂载命令使用方法
- 模板点击通过sql获得值 举例说明
- 简单的spring mvc实例
- 分享一下泛微OA与用友NC对接自动生成凭证的任务(一)
- IIS7下DataFormatString={0:c}人民币符号为?的问题
- 全新V10抢单系统唯品会/京东/淘宝自动抢单区块系统源码
- 公网与私网地址转换——NAT技术的使用小技巧,超简单!!!
- 计算机应用课程思政的应用,计算机类课程思政改革——以“Office高级应用”课程为例...
- 总结:阿里云学生服务器地址/条件/续费等问题及解答FAQ
- kubernetes集群搭建Zabbix监控平台
- 基于云服务创建离线数据统计分析服务(一)
- 2022年湖南省证券从业资格(证券投资基金)练习题及答案
- 网易运营微专业 目录
- 【数学建模】基于matlab船舶三自由度MMG模型【含Matlab源码 1925期】
- 客快物流大数据项目(八十一): Kudu原理