您的位置:首页 > 运维架构

使用OpenCV批量定位图片,并每隔0.5秒动态显示效果

2017-10-20 15:37 1196 查看

简介

使用OpenCV批量定位图片,并每隔0.5秒动态显示效果,可以灰度化或者否,再保存到相应文件夹下。

代码

// Demon.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <windows.h>
#include<vector>
#include<string>
#include<iostream>

using namespace std;
using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
string dir_path = "F:\\AutoSparePart2\\20170928\\Camera\\Cam2\\0\\";
char outDirName[50];
Directory dir;
Rect select;//声明矩形
string extenttype = "*.bmp";
vector<string> fileNames = dir.GetListFiles(dir_path, extenttype, false);

for (int item = 0; item < fileNames.size(); item++)
{
//get image name
string fileName = fileNames[item];
string fileFullName = dir_path + fileName;
//cout << "File name:" << fileName << endl;
cout << "Full path:" << fileFullName << endl;

cv::Mat img = cv::imread(fileFullName);

/*Mat grayImg;
cvtColor(img, grayImg, CV_BGR2GRAY);
cv::imshow("gray", grayImg);
cv::waitKey();*/
sprintf_s(outDirName, "F:\\objectmarker\\todo\\gray\\%08d.jpg", item);

//rectangle矩形
select.x = 20;
select.y = 10;
select.width = 250;
select.height = 200;
rectangle(img, select, Scalar(255, 0, 255), 2, 8, 0);//用矩形画矩形窗

cv::imshow("rectangleImg", img);
cv::waitKey(500);

//imwrite(outDirName, img);
}

return 0;

}




另一种显示方式

// Demon.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <windows.h>
#include<vector>
#include<string>
#include<iostream>

using namespace std;
using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
string dir_path = "F:\\AutoSparePart2\\20170928\\Camera\\Cam2\\0\\";
char outDirName[50];
Directory dir;
Rect select;//声明矩形
string extenttype = "*.bmp";
vector<string> fileNames = dir.GetListFiles(dir_path, extenttype, false);

for (int item = 0; item < fileNames.size(); item++)
{
//get image name
string fileName = fileNames[item];
string fileFullName = dir_path + fileName;
//cout << "File name:" << fileName << endl;
cout << "Full path:" << fileFullName << endl;

cv::Mat img = cv::imread(fileFullName);

/*Mat grayImg;
cvtColor(img, grayImg, CV_BGR2GRAY);
cv::imshow("gray", grayImg);
cv::waitKey();*/
sprintf_s(outDirName, "F:\\BaiduYunDownload\\ImagesJpg\\Cam-2\\0\\%06d.jpg", item);

//rectangle矩形
select.x = 20;
select.y = 10;
select.width = 250;
select.height = 200;
rectangle(img, select, Scalar(255, 0, 255), 2, 8, 0);//用矩形画矩形窗

/*cv::imshow("rectangleImg", img);
cv::waitKey(500);*/

Mat faceROI = img(select);

cv::imshow("faceROI", faceROI);
cv::waitKey(500);

//imwrite(outDirName, img);
}

return 0;

}




写入

// Demon.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <windows.h>
#include<vector>
#include<string>
#include<iostream>

using namespace std;
using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
string dir_path = "F:\\AutoSparePart2\\20171017\\Camera\\Cam4\\0\\";
char outDirName[50];
Directory dir;
Rect select;//声明矩形
string extenttype = "*.bmp";
vector<string> fileNames = dir.GetListFiles(dir_path, extenttype, false);

for (int item = 0; item < fileNames.size(); item++)
{
//get image name
string fileName = fileNames[item];
string fileFullName = dir_path + fileName;
//cout << "File name:" << fileName << endl;
cout << "Full path:" << fileFullName << endl;

Mat img = cv::imread(fileFullName);

/*Mat grayImg;
cvtColor(img, grayImg, CV_BGR2GRAY);
cv::imshow("gray", grayImg);
cv::waitKey();*/
sprintf_s(outDirName, "F:\\BaiduYunDownload\\ImagesJpg2\\Cam-4\\0\\%06d.jpg", item+1087);

//rectangle矩形
select.x = 0;
select.y = 0;
select.width = 320;
select.height = 240;
rectangle(img, select, Scalar(255, 0, 255), 2, 8, 0);//用矩形画矩形窗

imshow("rectangleimg", img);
waitKey(500);

Mat faceROI = img(select);

/*cv::imshow("faceROI", faceROI);
cv::waitKey(200); */

//imwrite(outDirName, faceROI);
}

return 0;

}


内存不足,改动sprintf_s(outDirName, “F:\BaiduYunDownload\ImagesJpg\Cam-2\0\%06d.jpg”, item);



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐