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图像操作:读取,裁剪,保存,缩放,遍历和读取文件夹图片相关推荐

  1. OpenCV图像操作

    OpenCV图像操作 OpenCV图像操作 输入输出 图片 图像的基本操作 访问像素强度值 内存管理和引用计数 原始操作 可视化图像 OpenCV图像操作 输入输出 图片 C ++ 从文件加载图像: ...

  2. OpenCV 图像旋转、平移、缩放

    本文是 OpenCV图像视觉入门之路的第7篇文章,本文详细的进行了图像的缩放 cv2.resize().旋转 cv2.flip().平移 cv2.warpAffine()等操作. OpenCV 图像旋 ...

  3. OpenCV图像操作的实例(附完整代码)

    OpenCV图像操作的实例 OpenCV图像操作的实例 OpenCV图像操作的实例 #include "opencv2/core.hpp" #include "openc ...

  4. android 遍历sdcard,Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法...

    本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法.分享给大家供大家参考,具体如下: private void CopyAssets(String a ...

  5. 教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)

    教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中.(附源码) 代码展示: 保存在各自的文件夹中 美么? 让我们开始爬虫之路 开发环境 windows 10 python3. ...

  6. 使用python代码,将csv文件中的问题逐条向ChatGPT提问,并将ChatGPT回复的结果新建为一个文件保存,文件名为所提出的问题,最后所有生成的word文件都保存在一个新生成的文件夹中。

    你可以使用 Python 的 csv 模块来读取 csv 文件,然后使用 ChatGPT 的 API 来获取回答.下面是一个例子,它假设你已经安装了 ChatGPT 并已经准备好了 csv 文件. i ...

  7. 可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) ....

    可视化webpart基础开发--TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 作者:miragesky2049 原文地址:http://blog.csdn.net/mirages ...

  8. opencv 图像操作,常用 OpenCV 内置函数

    OpenCV 如何对图像的像素进行操作 对图像的像素进行操作,我们可以实现空间增强,反色,大部分图像特效系列都是基于像素操作等目的.先来看一下内存空间中图像矩阵,也就是Mat的矩阵数值部分是怎么存储的 ...

  9. python遍历目录压缩文件夹然后在发送邮件_python目录操作之python遍历文件夹后将结果存储为xml...

    Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...

最新文章

  1. Kaggle经典数据分析项目:泰坦尼克号生存预测!
  2. python计算特征的统计值并文本输出
  3. python适合多大的人学-学Python编程孩子几岁最合适?
  4. Java:Java编程实现导出二维码
  5. SQL判断是否“存在“,还在用 count 操作?
  6. 关于ngx_trylock_accept_mutex的一些解释
  7. Ticket Game CodeForces - 1215D(博弈题,巴什博弈思维)
  8. 记一次es和mq的netty冲突
  9. LaTeX 目录中显示“参考文献”条目
  10. 内网和外网的区别_在家办公不再难,花生壳盒子助你内网穿透一臂之力
  11. 以太坊geth区块链私链建立
  12. 软件工程(2018)结对编程第一次作业
  13. Python - re - 正则表达式 - 怎么用
  14. 简易中控紫猫插件版(1)
  15. 【MMML】多模态机器学习高被引综述论文笔记
  16. 图片由模糊变清晰的效果实现
  17. linux V4L2子系统——v4l2架构(2)之v4l2_device
  18. 网站链接被微信屏蔽禁止访问的解决办法
  19. 为什么不建议你吃精致碳水,这里有你需要的答案
  20. 洛谷P1365 WJMZBMR打osu 题解

热门文章

  1. 为什么经营婚姻要像热恋一样
  2. Observer Pattern分析
  3. 《当程序员的那些狗日日子》(三十五)欲去还留
  4. win10下gnuplot的安装和使用
  5. 你还是只会用数组吗?不懂Java集合,还想找工作?(集合概述)
  6. Cervical Cancer mechanism
  7. Width Height -- (1)
  8. TortoiseSVN使用详细步骤(一)
  9. 基于android的语音识别
  10. 【freemaker】之FreeMakerUtil工具类