专门做中式的设计网站,外贸公司怎么注册,wordpress用什么发post,seo实战论坛文章目录前言一、完整代码二、实现效果前言
第一份代码实现了批量修改同一文件夹下图片的尺寸#xff0c;有其他需求时仅需修改处理部分的代码以及文件夹路径。 第二份代码实现了批量截取同一文件夹下每张图片的ROI区域作为结果保存#xff0c;注意截取后按下enter键才会跳到…
文章目录前言一、完整代码二、实现效果前言
第一份代码实现了批量修改同一文件夹下图片的尺寸有其他需求时仅需修改处理部分的代码以及文件夹路径。 第二份代码实现了批量截取同一文件夹下每张图片的ROI区域作为结果保存注意截取后按下enter键才会跳到下一张图片同时若是对已经截取的不满意只要不按下enter键都是可以重新选择的这都得益于selectROI函数。 参考了文章 opencv——批量处理图片并保存
但是编译时发现了问题debug发现是下面一行代码出了问题。
savedfilename dest filenames[i].substr(55);报错 [[noreturn]] static void _Xlen() 经过百度发现代码中的55意味着path的字符串长度。修改代码为
int len path.length();
savedfilename dest filenames[i].substr(len);问题解决。 一、完整代码
代码1
#include opencv2/opencv.hpp
#include opencv2/features2d.hpp
#include vector
#include algorithm
#include iostream
#include windows.h
#include stdio.h
#include time.h
#include math.h
#include fstream
#define WINDOW_NAME 【程序窗口】
using namespace cv;
using namespace std;
int main()
{cv::String path D:/opencv_picture_test/视觉项目新/; //待处理图片文件夹地址cv::String dest D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/; //处理后图片的保存地址cout 获取地址成功 endl;cv::String savedfilename;std::vectorcv::String filenames;int len path.length();cv::Mat srcImg, dstImg;cv::glob(path, filenames); //opencv里面用来读取指定路径下文件名的一个很好用的函数for (int i 0; i filenames.size(); i) {srcImg cv::imread(filenames[i]);//*************************对图片的处理部分***************************///这里我们批量修改图片的大小resize(srcImg, dstImg,Size(600,450));//********************************************************************/savedfilename dest filenames[i].substr(len);std::cout savedfilename std::endl;cv::imwrite(savedfilename, dstImg);cout 第 i 张完成 endl;}waitKey(0);return 0;
}代码2
#include opencv2/opencv.hpp
#include opencv2/features2d.hpp
#include vector
#include algorithm
#include iostream
#include windows.h
#include stdio.h
#include time.h
#include math.h
#include fstream
#define WINDOW_NAME 【程序窗口】
using namespace cv;
using namespace std;
int main()
{//改变控制台字体颜色system(color 02);cv::String path D:/opencv_picture_test/视觉项目resize后的图片夹/测试图片夹/; //待处理图片文件夹地址cv::String dest D:/opencv_picture_test/视觉项目resize后的图片夹/模板图片夹/; //处理后图片的保存地址cout 获取地址成功 endl;cv::String savedfilename;std::vectorcv::String filenames;int len path.length();cv::Mat srcImg, dstImg;cv::glob(path, filenames); //opencv里面用来读取指定路径下文件名的一个很好用的函数for (int i 0; i filenames.size(); i) {srcImg cv::imread(filenames[i]);//*************************对图片的处理部分***************************///这里我们批量选择原图中的某块ROI区域作为结果保存Rect2d r;r selectROI(srcImg, true); //选择一个矩形roi区域dstImg srcImg(r); //此区域为模板区域destroyAllWindows();//********************************************************************/savedfilename dest filenames[i].substr(len);std::cout savedfilename std::endl;cv::imwrite(savedfilename, dstImg);cout 第 i 张完成 endl;waitKey(30);}return 0;
}有些多余的头文件可以不添加。
二、实现效果 resize后 截取后的图