검색결과 리스트
OpenCV/example에 해당되는 글 13건
- 2013.06.15 이미지 읽고,처리,저장,보여주기(영상처리 기본)
- 2013.05.20 프로그램 실행시간 측정
- 2013.05.10 [OpenCV]카메라 영상에서 특정값 검출(HSV컬러모델)
- 2013.04.04 [OpenCV]카메라 영상 출력
- 2013.03.04 [OpenCV #7]이진 영상 변환(threshold)
- 2013.02.20 [OpenCV #6]split and merge
- 2013.02.19 [OpenCV #5]cv::Mat 클래스,복사,픽셀 접근
- 2013.02.14 [OpenCV #4]관심 영역
- 2013.02.14 [OpenCV #3]Threshold
- 2013.02.14 [OpenCV #2]이미지에서 RGB 채널 분리 1
글
이미지 읽고,처리,저장,보여주기(영상처리 기본)
stdafx.h
#include <iostream>
using namespace std;
stdOCV.h
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
main.cpp
'OpenCV > example' 카테고리의 다른 글
프로그램 실행시간 측정 (0) | 2013.05.20 |
---|---|
[OpenCV]카메라 영상에서 특정값 검출(HSV컬러모델) (0) | 2013.05.10 |
[OpenCV]카메라 영상 출력 (0) | 2013.04.04 |
[OpenCV #7]이진 영상 변환(threshold) (0) | 2013.03.04 |
[OpenCV #6]split and merge (0) | 2013.02.20 |
설정
트랙백
댓글
글
프로그램 실행시간 측정
OpenCV
int64 startTime = getTickCount(); double frequency = getTickFrequency();
//처리할 프로그램 함수()
int64 endTime = getTickCount(); cout << (endTime - startTime) / frequency;
int64 t,tinit;
tinit = getTickCount();
//처리 함수()
t = getTickCount() - tinit;
'OpenCV > example' 카테고리의 다른 글
이미지 읽고,처리,저장,보여주기(영상처리 기본) (0) | 2013.06.15 |
---|---|
[OpenCV]카메라 영상에서 특정값 검출(HSV컬러모델) (0) | 2013.05.10 |
[OpenCV]카메라 영상 출력 (0) | 2013.04.04 |
[OpenCV #7]이진 영상 변환(threshold) (0) | 2013.03.04 |
[OpenCV #6]split and merge (0) | 2013.02.20 |
설정
트랙백
댓글
글
[OpenCV]카메라 영상에서 특정값 검출(HSV컬러모델)
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
VideoCapture camera(CV_CAP_ANY);
Mat input;
Mat output(Size(input.size().height,input.size().width),input.type());
Mat img_thresh(Size(640,480),input.type());
namedWindow("input",0);
namedWindow("output",0);
namedWindow("threshold",0);
Scalar hsv_min = cvScalar(70 , 100, 100, 0);
Scalar hsv_max = cvScalar(130, 255, 255, 0);
for(;;)
{
camera >> input;
cvtColor(input,output,CV_BGR2HSV,1);
inRange(output,hsv_min,hsv_max,img_thresh);
imshow("input",input);
imshow("output",output);
imshow("threshold",img_thresh);
waitKey(30);
}
return 0;
}
'OpenCV > example' 카테고리의 다른 글
이미지 읽고,처리,저장,보여주기(영상처리 기본) (0) | 2013.06.15 |
---|---|
프로그램 실행시간 측정 (0) | 2013.05.20 |
[OpenCV]카메라 영상 출력 (0) | 2013.04.04 |
[OpenCV #7]이진 영상 변환(threshold) (0) | 2013.03.04 |
[OpenCV #6]split and merge (0) | 2013.02.20 |
설정
트랙백
댓글
글
[OpenCV]카메라 영상 출력
카메라 영상 출력하기
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
VideoCapture camera(CV_CAP_ANY);
if(!camera.isOpened())
return -1;
Mat result;
namedWindow("frame", CV_WINDOW_AUTOSIZE);
for(;;)
{
Mat frame;
camera >> frame; //get a new frame from camera.
result=frame.clone();
imwrite("camera.jpg",result);
imshow("frame", result);
if(waitKey(30) >= 0) break;
}
return 0;
}
'OpenCV > example' 카테고리의 다른 글
프로그램 실행시간 측정 (0) | 2013.05.20 |
---|---|
[OpenCV]카메라 영상에서 특정값 검출(HSV컬러모델) (0) | 2013.05.10 |
[OpenCV #7]이진 영상 변환(threshold) (0) | 2013.03.04 |
[OpenCV #6]split and merge (0) | 2013.02.20 |
[OpenCV #5]cv::Mat 클래스,복사,픽셀 접근 (0) | 2013.02.19 |
설정
트랙백
댓글
글
[OpenCV #7]이진 영상 변환(threshold)
1.이진 영상 변환(hreshold( InputArray src, OutputArray dst,double thresh, double maxval, int type )
double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type )
src and dst : 입출력 영상
thresh : 경계값
maxval : 변환 후의 1을 max_val로 변환
단, 아래의 threshold_type값에만 적용
CV_THRESH_BINARY
CV_THRESH_BINARY_INV
CV_THRESH_OTSU
type : 경계값 설정 방법
CV_THRESH_BINARY
CV_THRESH_BINARY_INV
CV_THRESH_TRUNC
CV_THRESH_TOZERO
CV_THRESH_TOZERO_INV
CV_THRESH_OTSU
2.소스코드
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("sistar.jpg",0);//CV_LOAD_IMAGE_GRAYSCALE=0, CV_LOAD_IMAGE_COLOR=1
if(!image.data) return -1; //Check image
Mat binary;
threshold(image,binary,100,255,CV_THRESH_BINARY);
imshow("binary",binary);
waitKey(0); //Wait for keystroke
return 0;
}
'OpenCV > example' 카테고리의 다른 글
[OpenCV]카메라 영상에서 특정값 검출(HSV컬러모델) (0) | 2013.05.10 |
---|---|
[OpenCV]카메라 영상 출력 (0) | 2013.04.04 |
[OpenCV #6]split and merge (0) | 2013.02.20 |
[OpenCV #5]cv::Mat 클래스,복사,픽셀 접근 (0) | 2013.02.19 |
[OpenCV #4]관심 영역 (0) | 2013.02.14 |
설정
트랙백
댓글
글
[OpenCV #6]split and merge
1.분리하고 통합
result - 원본 이미지를 RGB로 분리하고 Red와 Blue 채널을 바꿔, 통합한 결과
gray - 0.299*R + 0.587*G + 0.114*B 공식을 적용하여 gray이미지 출력
밑의 창들은 채널 분리한 결과
void split(const Mat& mtx, Vector<Mat>& mv)
mtx - the original color image
mv - the result set is 1-channel image
void merge(const Vector<Mat>& mv, Mat& dst)
mv - the original set of 1-channel image
dst - the resulting color image
2.소스코드
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("sistar.jpg"); //Load image form disk
if(!image.data) return -1; //Check image
//Split the original image into three channels
//channels[0],channels[1],channels[2]
vector<Mat> channels;
split(image,channels); //Partition image into three channel planes
imshow("Red",channels[2]);
imshow("Green",channels[1]);
imshow("Blue",channels[0]);
vector<Mat>channelslzm(3);
//Changes the Red and Blue sites:
channelslzm[0]=channels[2];
channelslzm[1]=channels[1];
channelslzm[2]=channels[0];
Mat imagelzm;
merge(channelslzm,imagelzm);
imshow("Result",imagelzm);
//Calculating the brightness according to the formula 0.299*R + 0.587*G + 0.114*B
//(But, in fact, it's right to do woth cvtColor)
Mat gray=0.299*channels[2]+0.587*channels[1]+0.114*channels[0];
imshow("Gray",gray);
waitKey(0); //Wait for keystroke
return 0;
}
'OpenCV > example' 카테고리의 다른 글
[OpenCV]카메라 영상 출력 (0) | 2013.04.04 |
---|---|
[OpenCV #7]이진 영상 변환(threshold) (0) | 2013.03.04 |
[OpenCV #5]cv::Mat 클래스,복사,픽셀 접근 (0) | 2013.02.19 |
[OpenCV #4]관심 영역 (0) | 2013.02.14 |
[OpenCV #3]Threshold (0) | 2013.02.14 |
설정
트랙백
댓글
글
[OpenCV #5]cv::Mat 클래스,복사,픽셀 접근
Mat 클래스의 객체 정의
기본적으로 0x0의 크기를 갖는 영상 정의
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
using namespace std;
int main()
{
Mat image;
cout<<"size:"<<image.size().height<<","<<image.size().width<<endl;
return 0;
}
기본적으로 0x0의 크기를 갖지만, 초기 크기를 지정할 수 있다.
이미지 가로 세로, 값 0~255(8U = unsigned 8bit), graysccale(C1,1-channel)
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
using namespace std;
int main()
{
int w=150,h=100;
Mat image(h,w,CV_8UC1);
cout<<"size:"<<image.size().height<<","<<image.size().width<<endl;
return 0;
}
그리고 색상 지정 및 이미지 보기
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
using namespace std;
int main()
{
int w=150,h=100;
Mat image(h,w,CV_8UC1,Scalar(255));
cout<<"size:"<<image.size().height<<","<<image.size().width<<endl;
imshow("image",image);
waitKey(0);
return 0;
}
1-channel with the floating-point value(32F = float 32bit)
Mat imageFloat(h,w,CV_32FC1);
Scalar(255)
3-channel image with values 0~255 for each channel
Mat imageRGB(h,w,CV_8UC3)
Scalar(0,0,255)
Mat 클래스의 복사본
//colne() or copyTo() 복사함수
Mat B=image.clone(); //새로운 복사본 생성* colne()
Mat B;
image.copyTo(B); //* copyTo()
Mat B=image; //같은 데이터를 참조하는 두 영상
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("sistar.jpg",0); //Load image form disk
if(!image.data) return -1; //Check image
//Mat B=image.clone(); //새로운 복사본 생성
Mat B=image; //같은 데이터를 참조하는 두 영상
threshold(B, B, 100, 255, CV_THRESH_BINARY);
imshow("sistar", image); //Show image
imshow("B", B); //Show image
waitKey(0); //Wait for keystroke
return 0;
}
관심 영역 자르기
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("sistar.jpg"); //Load image form disk
if(!image.data) return -1; //Check image
Rect rect(100,30,150,300);
Mat subimage=image(rect);
imshow("sistarROI",subimage); //Show image
waitKey(0); //Wait for keystroke
return 0;
}
//if you want to copy data:
image(rect).copyTo(subimage);
이미지 픽셀 접근하기
at을 이용한 1-채널 이미지 픽셀에 접근
//Get values
int value = image.at<uchar>(y,x);
//Set tje values
image.at<uchar>(y,x) = 100;
at을 이용한 3-채널 이미지 픽셀에 접근
//Get values
int value = image.at<Vec3b>(y,x)[c];
//Set tje values
image.at<Vec3b>(y,x)[c] = 100;
응용(영상 밝기 조정)
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
using namespace std;
int main()
{
double alpha=1.0;//1.0~3.0
int beta=50;//0~100
Mat image = imread("sistar.jpg"); //Load image form disk
Mat new_image = Mat::zeros(image.size(),image.type());
if(!image.data) return -1; //Check image
for(int y = 0; y < image.rows; y++)
{
for(int x = 0;x < image.cols; x++)
{
for(int c = 0; c < 3; c++)
{
new_image.at<Vec3b>(y,x)[c]=
saturate_cast<uchar>(alpha * (image.at<Vec3b>(y,x)[c]) + beta);
}
}
}
imshow("sistar",new_image); //Show image
waitKey(0); //Wait for keystroke
return 0;
}
'OpenCV > example' 카테고리의 다른 글
[OpenCV #7]이진 영상 변환(threshold) (0) | 2013.03.04 |
---|---|
[OpenCV #6]split and merge (0) | 2013.02.20 |
[OpenCV #4]관심 영역 (0) | 2013.02.14 |
[OpenCV #3]Threshold (0) | 2013.02.14 |
[OpenCV #2]이미지에서 RGB 채널 분리 (1) | 2013.02.14 |
설정
트랙백
댓글
글
[OpenCV #4]관심 영역
1.관심 영역
2.Project.cpp
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
int main()
{
Mat image = imread("sistar.jpg"); //Load image form disk
if(!image.data) return -1; //Check image
//Cut of picture
Rect rect = Rect(100, 30, 500, 100); //Rectangle cut
Mat image3;
image(rect).copyTo(image3); //Copy of the image
//Change the part of the picture inside the picture
image(rect) *= 2;
imshow("image changed", image);
waitKey(0); //Wait for keystroke
return 0;
}
'OpenCV > example' 카테고리의 다른 글
[OpenCV #6]split and merge (0) | 2013.02.20 |
---|---|
[OpenCV #5]cv::Mat 클래스,복사,픽셀 접근 (0) | 2013.02.19 |
[OpenCV #3]Threshold (0) | 2013.02.14 |
[OpenCV #2]이미지에서 RGB 채널 분리 (1) | 2013.02.14 |
[OpenCV #1]이미지 출력 (0) | 2013.02.14 |
설정
트랙백
댓글
글
[OpenCV #3]Threshold
1.Threshold
2.Project.cpp
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat image = imread("sistar.jpg"); //Load image form disk
if(!image.data) return -1; //Check image
//Split the original image into three channels
//channels[0],channels[1],channels[2]
vector<Mat> channels;
split(image, channels);
Mat image2;
threshold(channels[0], image2, 100, 255, CV_THRESH_BINARY);
imshow("Threadholded", image2);
waitKey(0); //Wait for keystroke
return 0;
}
'OpenCV > example' 카테고리의 다른 글
[OpenCV #5]cv::Mat 클래스,복사,픽셀 접근 (0) | 2013.02.19 |
---|---|
[OpenCV #4]관심 영역 (0) | 2013.02.14 |
[OpenCV #2]이미지에서 RGB 채널 분리 (1) | 2013.02.14 |
[OpenCV #1]이미지 출력 (0) | 2013.02.14 |
[OpenCV]프로젝트 속성시트 가져오기[Tip] (0) | 2013.02.08 |
설정
트랙백
댓글
글
[OpenCV #2]이미지에서 RGB 채널 분리
1.Allocation of channels Red, Green, Blud
2.Project.cpp
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
void main() {
Mat image = imread("sistar.jpg"); //Load image form disk
if(!image.data) exit(1); //Check image
//Split the original image into three channels
//channels[0],channels[1],channels[2]
vector<Mat> channels;
split(image, channels); //Partition image into three channel planes
imshow("Red", channels[2]);
imshow("Green", channels[1]);
imshow("Blue", channels[0]);
waitKey(0); //Wait for keystroke
}
'OpenCV > example' 카테고리의 다른 글
[OpenCV #4]관심 영역 (0) | 2013.02.14 |
---|---|
[OpenCV #3]Threshold (0) | 2013.02.14 |
[OpenCV #1]이미지 출력 (0) | 2013.02.14 |
[OpenCV]프로젝트 속성시트 가져오기[Tip] (0) | 2013.02.08 |
[OpenCV]Opencv 2.4.3 설치와 설정하기 (2) | 2013.02.07 |