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

本文介绍如何使用OpenCV批量处理图片文件,包括读取指定路径下的所有.bmp格式图片,进行矩形标记并动态显示处理结果。每张图片经过处理后会保存到指定文件夹中,展示了两种不同的图片展示方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

使用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);
这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何以问天涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值