#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
// 영상을 생성하고 반환하는 함수
cv::Mat function() {
// 영상 생성
cv::Mat ima(240,320,CV_8U,cv::Scalar(100));
// 영상 반환
return ima;
}
int main() {
// 영상 생성
cv::Mat image;
// 영상 크기 출력
std::cout << "size: " << image.size().height << " , " << image.size().width << std::endl;
// 영상 열기
image= cv::imread("img.jpg");
// 영상을 성공적으로 열었는지 확인
if (!image.data) {
// no image has been created?
return 0;
}
// 영상 크기 출력
std::cout << "size (after reading): " << image.size().height << " , " << image.size().width << std::endl;
// 영상 띄워 보기
cv::namedWindow("Original Image"); // 창 정의
cv::imshow("Original Image", image); // 영상 보기
// 다른 영상 생성
cv::Mat result;
// 영상 뒤집기
cv::flip(image,result,1); // 수평에 대한 양수
// 0은 수직,
// 모두 음수임
// 결과 띄워 보기
cv::namedWindow("Output Image");
cv::imshow("Output Image", result);
// 키 입력 기다리기
cv::waitKey(0);
// 파일에 영상 쓰기
cv::imwrite("output.bmp", result);
// 두 개의 새로운 영상 생성
cv::Mat image2, image3;
image2= result; // 동일한 데이터를 참조하는 두 영상
result.copyTo(image3); // 새로운 복사본이 생성됨
// 수직으로 뒤집기
cv::flip(result,result,0);
// 결과 띄워 보기
cv::namedWindow("image 2");
cv::imshow("image 2", image2);
cv::namedWindow("image 3");
cv::imshow("image 3", image3);
// 명암도 영상 가져오기
cv::Mat gray= function();
// 결과 띄워 보기
cv::namedWindow("Gray Image");
cv::imshow("Gray Image", gray);
// 키 입력 대기
cv::waitKey(0);
return 1;
}
- 참고문헌 : OpenCV 2 Computer Vision Application Programming Cookbook
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
class Test{
cv::Mat ima;
public:
Test() : ima(240, 320, CV_8U, cv::Scalar(100)){}
cv::Mat method() {return ima; }
};
cv::Mat function()
{
cv::Mat ima(240, 320, CV_8U, cv::Scalar(100));
// 이미지 생성
// cv::Mat 객체에 대한 할당 모델은 다른 함수에서 안전하게 쓸 수 있다.
return ima; // 이미지 리턴
}
int main()
{
cv::Mat gray = function();
// main 함수에서 함수 호출.
// 그레이레벨 영상 갖기.
cv::namedWindow("gray");
cv::imshow("gray", gray);
cv::waitKey(0);
return 1;
}
- 참고문헌 : OpenCV 2 Computer Vision Application Programming Cookbook
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
// using namespace cv; // cv 네임스페이스 내부 정의
int main()
{
cv::Mat ima(240, 320, CV_8U, cv::Scalar(100));
// 기본적으로 0x0이지만 초기 크기 지정 가능.
// 1 바이트 화소의 경우 CV_8U를 지정.
// U 문자는 부호 없음을 의미, S 문자는 부호있는 숫자 선언.
// 컬러 영상의 경우 3차원 채널(CV_8UC3)을 지정.
// cv::Scalar(100)은 0과 255가 아니므로 회색조.
cv::Mat image1;
image1 = cv::imread("img3.jpg");
cv::Mat image2, image3;
image2 = image1; // 같은 데이터를 참조하는 두 영상 (복사가 아닌 참조를 한다.)
image1.copyTo(image3); // copyTo를 이용해서 새로운 복사본 생성
flip(image1, image1, 1);
// image3는 영상의 복사본을 갖고 있으므로 변하지 않는다.
// image1과 2는 변환에 의한 결과를 보게 된다.
cv::namedWindow("image1");
cv::imshow("image1", image1);
cv::namedWindow("image2");
cv::imshow("image2", image2);
cv::namedWindow("image3");
cv::imshow("image3", image3);
cv::waitKey(0);
return 1;
}
- 참고문헌 : OpenCV 2 Computer Vision Application Programming Cookbook
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
//using namespace cv;
int main()
{
cv::Mat image;
cout << "size : " << image.size().height << ", " << image.size().width << std::endl;
image = cv::imread("img3.jpg");
if(!image.data)
{
cout << "Create failed" << endl;
}
cv::namedWindow("Original Image"); // 창을 정의
cv::imshow("Original Image", image); // 영상을 보여 주기
cv::Mat result; // 영상을 담을 변수 선언
cv::flip(image, result, 1);
// flie은 영상을 반전시키는 메소드
// 수평을 의미하는 양수, 0은 수직, 음수는 수직 수평
cv::namedWindow("Output Image"); // 다른 창에서 결과를 띄움
cv::imshow("Output image", result);
cv::waitKey(0);
cv::imwrite("output.bmp", result); // 영상 저장
return 1;
}
- 참고문헌 : OpenCV 2 Computer Vision Application Programming Cookbook
OpenCV #1 영상처리 준비
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main()
{
// 영상 읽기
cv::Mat image = cv::imread("img2.jpg");
// "My Image" 이름을 갖는 영상 창 생성
cv::namedWindow("My Image");
// 창에 영상을 보여주기
cv::imshow("My Image", image);
// 5000 ms 동안 키 입력 기다리기
cv::waitKey(5000);
return 1;
}
- 참고문헌 : OpenCV 2 Computer Vision Application Programming Cookbook