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

简介

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

代码

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

#include "stdafx.h"
#include 
#include  
#include
#include  
#include

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;

}

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

另一种显示方式

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

#include "stdafx.h"
#include 
#include  
#include
#include  
#include

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;

}

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

写入

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

#include "stdafx.h"
#include 
#include  
#include
#include  
#include

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);
使用OpenCV批量定位图片,并每隔0.5秒动态显示效果_第3张图片

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

你可能感兴趣的:(OpenCV)