OpenCV "연속 이미지 로드""연속 저장"

개요



화상 처리를 하고 있으면, 연속으로의 읽어내기나 연속으로의 보존 뭔가 하고 싶어지는 때가 있겠지요. 특히 대량으로 화상 데이터가 있는 경우에는 필요한 기술이라고 생각합니다. 여러가지 방법이 있다고 생각합니다만, 여기에서는 제가 자주 사용하는 방법을 설명하고 싶습니다.

이러한 연속 번호의 이미지를 준비합니다.





Mark7 이미지 연속 로드


#include <opencv2/opencv.hpp>
#include<iostream>

#if _DEBUG
#pragma comment(lib,"opencv_world430d.lib")
#else
#pragma comment(lib,"opencv_world430.lib")
#endif;;

using namespace cv;
using namespace std;

int main()
{
    Mat img;

    for (int n = 1; n < 11; n++) {
        string filepas = "C:\\Users\\abc\\Desktop\\aaa\\" + to_string(n) + ".png";
        img = imread(filepas);
        imshow("a", img);
        waitKey(0);
    }



    return 0;
}


해설①
for (int n = 1; n < 11; n++)

먼저 for 문에서 몇 장의 이미지가 있는지와 n이 무엇의 숫자인지를 여기서 결정합니다.

해설②
string filepas = "C:\\Users\\abc\\Desktop\\aaa\\" + to_string(n) + ".png";

그런 다음 문자열을 사용하여 filepas를 선언합니다. filepas가 아니더라도 이름은 무엇이든 좋습니다. 거기에 이미지까지의 경로를 넣습니다. 그리고 이미지의 이름이 다른 곳만을 to_string(n) 으로 for분의 숫자가 되도록 하고, 마지막에 ""안에 이미지의 확장자를 넣어 주면 OK입니다. 이것으로 연속으로의 표시는 할 수 있다고 생각합니다.

Mark8 이미지 연속 저장


#include <opencv2/opencv.hpp>
#include<iostream>

#if _DEBUG
#pragma comment(lib,"opencv_world430d.lib")
#else
#pragma comment(lib,"opencv_world430.lib")
#endif;;

using namespace cv;
using namespace std;

int main()
{
    Mat img;

    for (int n = 1; n < 11; n++) {
        string filepas = "C:\\Users\\abc\\Desktop\\aaa\\" + to_string(n) + ".png";
        img = imread(filepas);



        string filepas1 = "C:\\Users\\abc\\Desktop\\ccc\\" + to_string(n) + ".png";
        imwrite(filepas1, img);
        imshow("a", img);
        waitKey(0);
    }



    return 0;
}

해설①

모처럼이므로 방금 가져온 이미지를 파일에 저장합니다.
거의 아까와 같습니다만, 다음은 imwrite 에 패스인 filepas1 를 넣어 먼저 읽어들였던 img 를 저장하도록 합시다.
 imwrite(filepas1, img);

이렇게 저장할 수 있으면 OK입니다.


마지막으로



그렇게 어렵지 않다고 생각하므로 꼭 해보세요. 단지 이번에 소개한 것은 어디까지나 연속의 번호가 되고 있는 화상에 한정합니다. 만약 그렇지 않다면 조금 복잡해진다고 생각하므로 노력해 주세요.
최근, 후지이풍에 빠져 있습니다. 매우 좋은 아티스트이므로 들어보세요.

좋은 웹페이지 즐겨찾기