opencv图像操作:读取,裁剪,保存,缩放,遍历和读取文件夹图片
opencv.cpp文件
#include <iostream>
#include "opencv.hpp"
#include "opencv_test.h"
using namespace cv;
using namespace std;int main()
{Mat srcImage = imread("result.jpg"); //定义并且载入图像
// Mat imread(const string& filename,flags = 1)
// filename:载入图片的路径,支持载入的图片的格式:bmp,dib,jpeg,jpg,jpe,jp2,png,pbm,pgm,ppm,sr,ras,tiff,tif
// flags:
// flags>0 返回一个3通道的彩色图像;
// flags=0 返回灰色图像;
// flags<0 返回包含Alpha通道的图像if (srcImage.data == nullptr)//nullptr是c++11新出现的空指针常量{cerr << "图片文件不存在" << endl;return 0;}namedWindow("原图", WINDOW_NORMAL); //创建窗口,创建窗口的效果就是图片在窗口中显示能够拖动改变大小
// void namedWindow(cosnt string& winname, int flags = WINDOW_AUTOSIZE)
// winname:创建窗口的名称
// flags:
// WINDOW_NORMAL:用户可以缩放窗口
// WINDOW_AUTOSIZE:窗口适应图像
// WINDOW_OPENGL:窗口创建之初openglimshow("原图", srcImage); //显示原图
// void imshow(const string& winname, InputArray mat)
// winname:窗口名称
// mat:需要显示的图像imwrite("output.jpg", srcImage); //写入文件
// bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>())
// filename:输出的文件名
// img:用于输出的Mat数据
// params:特定格式保存的参数编码,一般不需要填写Mat image_mini;//定义缩小图namedWindow("缩小图", WINDOW_NORMAL); //创建窗口resize(srcImage, image_mini, cv::Size(srcImage.cols / 10, srcImage.rows/10));//缩小操作imshow("缩小图", image_mini); //显示缩小图片Rect m_select;//定义矩形区域namedWindow("剪裁图", WINDOW_NORMAL); //创建窗口m_select = Rect(0, 0, srcImage.rows / 10, srcImage.cols / 10);//选择图片区间Mat ROI = srcImage(m_select);//设置感兴趣区域imshow("剪裁图", ROI);//显示感兴趣区域 遍历每个像素之所以用y这个名字表示行是因为图片的坐标系中行号就是y//for (size_t y = 0; y < srcImage.rows/100; ++y) {// // 获取行指针,之所以用char的原因是因为颜色值是1-256用char能放得下// // ptr是pointer的缩写// unsigned char* row_ptr = srcImage.ptr<unsigned char>(y);// for (size_t x = 0; x < srcImage.cols/100; ++x) {// //这是获得像素数据数组的头指针,注意像素数据可能会有多个通道所以才需要用数组存储// unsigned char* data_ptr = &row_ptr[x * srcImage.channels()];// //对当前像素逐个通道输出颜色值// for (int i = 0; i < srcImage.channels(); ++i) {// cout << int(data_ptr[i])<< endl;// }// //对像素除以二的操作// for (int i = 0; i < srcImage.channels(); ++i) {// data_ptr[i]/=2;// }// //输出一个空格// cout << endl;// //再次输出像素值// for (int i = 0; i < srcImage.channels(); ++i) {// cout << int(data_ptr[i]) << endl;// }// }//}cv::String pattern ="C:/Users/86178/Desktop/6mm-light-on-dark/img/*.png" ;//多幅图片路径Read read;//定义一个read类vector<Mat> img = read.ReadImage(pattern);//读取路径中的图片int c = waitKey(2000);//等待时间2秒内无任何操作时等待结束后返回-1
// int waitKey(int delay = 0)
// delay:等待delay秒关闭窗口cout << " c = " << c << endl;//输出c = -1waitKey(); //注意这里是要鼠标当前焦点在图片窗口时才能响应按钮按下,如果不按下就一直等待destroyWindow("剪裁图");//按下第一次关闭剪切图waitKey(); //按下第二次关闭所有窗口destroyAllWindows();//关闭所有窗口waitKey();//第三次按下全部结束return 0;
}vector<Mat> Read::ReadImage(cv::String pattern)
{vector<cv::String> fn;glob(pattern, fn, false);/* 绝对路径下的照片pattern = "/home/Data/data/*.jpg" : 选择 * .jpg这一类的图片std::vector< cv::String > &result : 这里必须为CV的String,即路径被存在string类型的vector中bool recursive : 可省去, 当recursive为false时,仅仅遍历指定文件夹内符合模式的文件;当recursive为true时,会同时遍历指定文件夹的子文件夹*/vector<Mat> images;size_t count = fn.size(); //number of png files in images folderfor (size_t i = 0; i < count; i++){images.emplace_back(cv::imread(fn[i]));imshow("img", imread(fn[i]));waitKey(0);}return images;}
***opencv.h文件***
```c
#pragma once
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;class Read {public:vector<Mat> ReadImage(cv::String pattern);
};
opencv图像操作:读取,裁剪,保存,缩放,遍历和读取文件夹图片相关推荐
- OpenCV图像操作
OpenCV图像操作 OpenCV图像操作 输入输出 图片 图像的基本操作 访问像素强度值 内存管理和引用计数 原始操作 可视化图像 OpenCV图像操作 输入输出 图片 C ++ 从文件加载图像: ...
- OpenCV 图像旋转、平移、缩放
本文是 OpenCV图像视觉入门之路的第7篇文章,本文详细的进行了图像的缩放 cv2.resize().旋转 cv2.flip().平移 cv2.warpAffine()等操作. OpenCV 图像旋 ...
- OpenCV图像操作的实例(附完整代码)
OpenCV图像操作的实例 OpenCV图像操作的实例 OpenCV图像操作的实例 #include "opencv2/core.hpp" #include "openc ...
- android 遍历sdcard,Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法...
本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法.分享给大家供大家参考,具体如下: private void CopyAssets(String a ...
- 教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)
教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中.(附源码) 代码展示: 保存在各自的文件夹中 美么? 让我们开始爬虫之路 开发环境 windows 10 python3. ...
- 使用python代码,将csv文件中的问题逐条向ChatGPT提问,并将ChatGPT回复的结果新建为一个文件保存,文件名为所提出的问题,最后所有生成的word文件都保存在一个新生成的文件夹中。
你可以使用 Python 的 csv 模块来读取 csv 文件,然后使用 ChatGPT 的 API 来获取回答.下面是一个例子,它假设你已经安装了 ChatGPT 并已经准备好了 csv 文件. i ...
- 可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) ....
可视化webpart基础开发--TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 作者:miragesky2049 原文地址:http://blog.csdn.net/mirages ...
- opencv 图像操作,常用 OpenCV 内置函数
OpenCV 如何对图像的像素进行操作 对图像的像素进行操作,我们可以实现空间增强,反色,大部分图像特效系列都是基于像素操作等目的.先来看一下内存空间中图像矩阵,也就是Mat的矩阵数值部分是怎么存储的 ...
- python遍历目录压缩文件夹然后在发送邮件_python目录操作之python遍历文件夹后将结果存储为xml...
Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...
最新文章
- Kaggle经典数据分析项目:泰坦尼克号生存预测!
- python计算特征的统计值并文本输出
- python适合多大的人学-学Python编程孩子几岁最合适?
- Java:Java编程实现导出二维码
- SQL判断是否“存在“,还在用 count 操作?
- 关于ngx_trylock_accept_mutex的一些解释
- Ticket Game CodeForces - 1215D(博弈题,巴什博弈思维)
- 记一次es和mq的netty冲突
- LaTeX 目录中显示“参考文献”条目
- 内网和外网的区别_在家办公不再难,花生壳盒子助你内网穿透一臂之力
- 以太坊geth区块链私链建立
- 软件工程(2018)结对编程第一次作业
- Python - re - 正则表达式 - 怎么用
- 简易中控紫猫插件版(1)
- 【MMML】多模态机器学习高被引综述论文笔记
- 图片由模糊变清晰的效果实现
- linux V4L2子系统——v4l2架构(2)之v4l2_device
- 网站链接被微信屏蔽禁止访问的解决办法
- 为什么不建议你吃精致碳水,这里有你需要的答案
- 洛谷P1365 WJMZBMR打osu 题解