읽고, 보여주고 저장!
Mat class
Mat class는 객체가 영역 밖을 벗어나면 할당됐던 메모리를 자동으로 해제한다.
얕은 복사를 하도록 구현이 되어있다. 깊은 복사를 원하면 copyTo() 함수를 이용한다.
아래 소스에는 기본적인 함수들을 사용한 예가 있다.
#include <stdio.h>
#include<iostream>
#include <opencv2\opencv.hpp>
#include <opencv\highgui.h>
using namespace std;
using namespace cv;
int main(void)
{
//초기 설정을 하지 않으면 사이즈는 0
//아래는 설정 크기 300*300, 뒤는 모르겠습니다. 나중에 추가..
Mat ima(300, 300, CV_8U, Scalar(1000));
imshow("ima", ima);
//icon이미지 읽어온다.
Mat image = cv::imread("icon.png");
//사이즈 출력
std::cout << "size" << image.size() << endl;
std::cout << "height" << image.size().height << endl;
std::cout << "width" << image.size().width << endl;
//이미지 파일이 잘 열리지 않았다면 image.data는 0을 반환
if (!image.data)
cout << "fail" << endl;
else
cout << "sucess" << endl;
Mat result;
//image를 result에 대칭이동 시킨 이미지를 넘겨준다.
//0은 상하 1은 좌우 -1은 모두
flip(image, result, -1);
//이미지를 띄울 창 이름 설정
//cv::namedWindow("My Image");
//이미지 show
cv::imshow("origin",image);
cv::imshow("flip result", result);
//png는 생성안됨 왜..
cv::imwrite("result.bmp", result);
cv::Mat origin, copy;
origin = image;
copy.copyTo(origin); //깊은 복사 별도의 새로운 copy만의 값을 가진다.
//0이면 입력이 들어올 때까지 기다린다. 다른 예) 5000이면 5초를 기다린다.
cv::waitKey(0);
return 0;
}
#include<iostream>
#include <opencv2\opencv.hpp>
#include <opencv\highgui.h>
using namespace std;
using namespace cv;
int main(void)
{
//초기 설정을 하지 않으면 사이즈는 0
//아래는 설정 크기 300*300, 뒤는 모르겠습니다. 나중에 추가..
Mat ima(300, 300, CV_8U, Scalar(1000));
imshow("ima", ima);
//icon이미지 읽어온다.
Mat image = cv::imread("icon.png");
//사이즈 출력
std::cout << "size" << image.size() << endl;
std::cout << "height" << image.size().height << endl;
std::cout << "width" << image.size().width << endl;
//이미지 파일이 잘 열리지 않았다면 image.data는 0을 반환
if (!image.data)
cout << "fail" << endl;
else
cout << "sucess" << endl;
Mat result;
//image를 result에 대칭이동 시킨 이미지를 넘겨준다.
//0은 상하 1은 좌우 -1은 모두
flip(image, result, -1);
//이미지를 띄울 창 이름 설정
//cv::namedWindow("My Image");
//이미지 show
cv::imshow("origin",image);
cv::imshow("flip result", result);
//png는 생성안됨 왜..
cv::imwrite("result.bmp", result);
cv::Mat origin, copy;
origin = image;
copy.copyTo(origin); //깊은 복사 별도의 새로운 copy만의 값을 가진다.
//0이면 입력이 들어올 때까지 기다린다. 다른 예) 5000이면 5초를 기다린다.
cv::waitKey(0);
return 0;
}
댓글 없음:
댓글 쓰기