오늘의 사건사고
분류 전체보기
(475)
세상살이
(149)
배두나
(4)
주절주절
(67)
지름
(59)
생각
(38)
정보
(58)
과제
(9)
영화상영정보
(2)
영화
(26)
일본영화
(22)
영화관 기행
(1)
음악
(21)
ACM
(9)
Image Processing
(6)
홈
태그
미디어로그
위치로그
방명록
RyuiSaka
검색을 통해 들어오신 분들께 드리는 말씀
Wish List
Kay's story
하고 싶은 말은 하는 블로그
J's
개밥세상
잭크와 콩나무
ZeroWiki
어른이 되가는 소녀.
두나넷
Silver Rain
kaori 日和
우물안 이무기
COM's Project
새롭게 태어나다
☆DreamChaser★
World of EmulBoy
IT's Lives.
eMTi.net Blog
ㅈ융. Mint Chocolate_Colored
Welcome To Hong Bakery!!
양을 찾아 떠나는 모험
원념의 귀곡성
돌아오지 않는 숲
자민의 새벽안개
/
/
image processing
[OpenCV] Threshold와 Morphology 적용하기
2008.11.14
4
오랜만에 지른 책들
2008.11.13
3
[OpenCV] 이미지 산술연산 테스트
2008.11.11
[OpenCV] 간단한 예제, Image Crop
2008.11.06
4
[OpenCV] Threshold와 Morphology 적용하기
2008. 11. 14. 17:03
- 결과
원본 이미지
Threshold 적용 후
Threshold를 적용 한 후, Morphology까지 적용
- 소스코드
#include
/* * main.cpp * OpenCVApp * * Created by Seongwoo Lee on 11/11/08. * Copyright 2008 RyuiSaka. All rights reserved. * */ // This header includes all the opencv headers (cv, cxcore, highgui, ml) #include
int main(int argc, char** argv) { IplImage* sourceImage = cvLoadImage("./test.jpg", CV_LOAD_IMAGE_COLOR); IplImage* hsvImage = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 3); IplImage* hsvImage_h = cvCreateImage(cvGetSize(hsvImage), IPL_DEPTH_8U, 1); IplImage* hsvImage_s = cvCreateImage(cvGetSize(hsvImage), IPL_DEPTH_8U, 1); IplImage* hsvImage_v = cvCreateImage(cvGetSize(hsvImage), IPL_DEPTH_8U, 1); IplImage* intermediateImage = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); IplImage* morphologyIntermediateImage = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); IplImage* convertedImage = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 3); IplImage* morphologyImage = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 3); char* sourceWindow = "Source Image(BGR)"; char* convertedWindow = "Converted Image(applied to the threshold)"; char* morphologyWindow = "Converted Image2(applied to the threshold and morphology)"; cvNamedWindow(sourceWindow, CV_WINDOW_AUTOSIZE); cvNamedWindow(convertedWindow, CV_WINDOW_AUTOSIZE); cvNamedWindow(morphologyWindow, CV_WINDOW_AUTOSIZE); cvShowImage(sourceWindow, sourceImage); cvCvtColor(sourceImage, hsvImage, CV_BGR2HSV); cvSplit(hsvImage, hsvImage_h, hsvImage_s, hsvImage_v, NULL); cvCmpS(hsvImage_s, 40, intermediateImage, CV_CMP_GE); cvCopy(sourceImage, convertedImage, intermediateImage); cvShowImage(convertedWindow, convertedImage); cvErode(intermediateImage, morphologyIntermediateImage, NULL, 1); cvCopy(sourceImage, morphologyImage, morphologyIntermediateImage); cvShowImage(morphologyWindow, morphologyImage); cvWaitKey(0); return 0; }
공유하기
게시글 관리
오늘의 사건사고
저작자표시
비영리
변경금지
오랜만에 지른 책들
2008. 11. 13. 23:17
'류이치 사카모토의 음악세계'라는 제목의 책.
가격은 13,000원.
우리나라 사람이 대충 쓴 책인줄 알았는데, 일본사람이 쓴 책을 번역해놓은 책이었다.
'YMO' 시절부터 'Ryuichi Sakamoto' 시절까지 발매된 음반과 음악들에 대한 세계관이라든지, 그 속에 녹아있는 철학에 대한 이야기와 다양한 곡들의 피아노 악보가 들어있다.
피아노 악보는 피아노를 칠 줄 모르기때문에 별로 볼 일이 없을 것 같긴 하지만, 음반과 음악들에 대한 설명은 류이치 사카모토님의 음악을 좋아하면서도 그의 철학이나 음악관에 대한 이해가 없었던 나로서는 나름 도움이 될 것 같다.
더 말이 필요 있겠는가.
OpenCV 공부하기 위해 샀다.
국내에 나온 유일한(?) OpenCV 책이면서 내용도 괜찮다고 해서 구입하게 됐다.
가격은 40,000원.
열심히 봐야지...(라고 스스로 위안을...)
공유하기
게시글 관리
오늘의 사건사고
저작자표시
비영리
변경금지
[OpenCV] 이미지 산술연산 테스트
2008. 11. 11. 23:33
/* * main.cpp * OpenCVApp * * Created by Seongwoo Lee on 11/11/08. * Copyright 2008 RyuiSaka. All rights reserved. * */ // This header includes all the opencv headers (cv, cxcore, highgui, ml) #include
int main(int argc, char** argv) { IplImage* sourceImage1 = cvLoadImage("source1.jpg", CV_LOAD_IMAGE_COLOR); IplImage* sourceImage2 = cvLoadImage("source2.jpg", CV_LOAD_IMAGE_COLOR); IplImage* addImage = cvCreateImage(cvGetSize(sourceImage1), IPL_DEPTH_8U, 3); IplImage* subImage = cvCreateImage(cvGetSize(sourceImage1), IPL_DEPTH_8U, 3); IplImage* mulImage = cvCreateImage(cvGetSize(sourceImage1), IPL_DEPTH_8U, 3); IplImage* divImage = cvCreateImage(cvGetSize(sourceImage1), IPL_DEPTH_8U, 3); IplImage* graySourceImage1 = cvCreateImage(cvGetSize(sourceImage1), IPL_DEPTH_8U, 1); IplImage* graySourceImage2 = cvCreateImage(cvGetSize(sourceImage2), IPL_DEPTH_8U, 1); IplImage* differenceImage = cvCreateImage(cvGetSize(sourceImage1), IPL_DEPTH_8U, 1); char* sourceWindow1 = "Source Window 1"; char* sourceWindow2 = "Source Window 2"; char* addWindow = "Add Source Images"; char* subWindow = "Subtract Source Images"; char* mulWindow = "Multiply Source Images"; char* divWindow = "Divide Source Images"; char* graySource1Window = "Gray Source Image 1"; char* graySource2Window = "Gray Source Image 2"; char* differenceWindow = "Difference of Two Images"; cvNamedWindow(sourceWindow1, CV_WINDOW_AUTOSIZE); cvNamedWindow(sourceWindow2, CV_WINDOW_AUTOSIZE); cvNamedWindow(addWindow, CV_WINDOW_AUTOSIZE); cvNamedWindow(subWindow, CV_WINDOW_AUTOSIZE); cvNamedWindow(mulWindow, CV_WINDOW_AUTOSIZE); cvNamedWindow(divWindow, CV_WINDOW_AUTOSIZE); cvNamedWindow(graySource1Window, CV_WINDOW_AUTOSIZE); cvNamedWindow(graySource2Window, CV_WINDOW_AUTOSIZE); cvNamedWindow(differenceWindow, CV_WINDOW_AUTOSIZE); cvAdd(sourceImage1, sourceImage2, addImage); cvSub(sourceImage1, sourceImage2, subImage); cvMul(sourceImage1, sourceImage2, mulImage); cvDiv(sourceImage1, sourceImage2, divImage); cvCvtColor(sourceImage1, graySourceImage1, CV_BGR2GRAY); cvCvtColor(sourceImage2, graySourceImage2, CV_BGR2GRAY); for(int y = 0; y < graySourceImage1->height; y++) for(int x = 0; x < graySourceImage1->width; x++) if(abs(cvGetReal2D(graySourceImage1, y, x) - cvGetReal2D(graySourceImage2, y, x)) > 100) cvSetReal2D(differenceImage, y, x, 255); cvShowImage(sourceWindow1, sourceImage1); cvShowImage(sourceWindow2, sourceImage2); cvShowImage(addWindow, addImage); cvShowImage(subWindow, subImage); cvShowImage(mulWindow, mulImage); cvShowImage(divWindow, divImage); cvShowImage(graySource1Window, graySourceImage1); cvShowImage(graySource2Window, graySourceImage2); cvShowImage(differenceWindow, differenceImage); cvWaitKey(0); return 0; }
공유하기
게시글 관리
오늘의 사건사고
저작자표시
비영리
변경금지
[OpenCV] 간단한 예제, Image Crop
2008. 11. 6. 03:29
우여곡절 끝에 겨우겨우 첫번째 Assignment를 끝냈다.
사실 선배들은 별로 필요 없는 프로그램이라고 했지만, 그래도 시작한건 끝내야하지 않을까 하는 생각에 한번 만들어봤다.
프로그램 자체는 별다른 기능이 없다.
하나의 이미지(이 프로그램상에서는 'test.jpg'라는 파일)를 읽어들여서 윈도우에 띄워 준 후, 해당 윈도우의 두 점을 클릭하면 새로운 윈도우가 뜨면서 클릭한 두 점 사이의 영역에 대한 R, G, B 평균값을 출력해 주는 것.
사실 이게 제대로 만든 프로그램인지 아직까지 잘 모르겠지만...공부하다보면 이 소스를 떠올리며 '그 땐 그랬지'라고 말 할 수 있겠지...
어쨌거나 더 열심히!
- 테스트 이미지
- 소스코드
/* * main.cpp * OpenCVApp * * Created by Seongwoo Lee on 11/03/08. * Copyright 2008 RyuiSaka. All rights reserved. * */// This header includes all the opencv headers (cv, cxcore, highgui, ml) #include <math.h>#include <stdlib.h>#include <string.h>#include <OpenCV/OpenCV.h>void cropWindow(int event, int x, int y, int flags, void* sourceImage);bool flag = FALSE;CvPoint savedPoint;int main(int argc, char **argv){ IplImage* sourceImage = cvLoadImage("./test.jpg", CV_LOAD_IMAGE_COLOR); char* window1 = "Test Window"; cvNamedWindow(window1, CV_WINDOW_AUTOSIZE); cvShowImage(window1, sourceImage); cvSetMouseCallback(window1, cropWindow, sourceImage); cvWaitKey(0); cvReleaseImage(&sourceImage); cvDestroyAllWindows(); return 0 ;}void cropWindow(int event, int x, int y, int flags, void* sourceImage){ CvFont font; double hScale = 1; double vScale = 1; int lineWidth = 1; cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, hScale, vScale, 0, lineWidth); if(event == CV_EVENT_LBUTTONDOWN && flag == FALSE) { savedPoint.x = x; savedPoint.y = y; flag = TRUE; } else if(event == CV_EVENT_LBUTTONDOWN && flag == TRUE) { int i, j; double r, g, b, avg; char* cropWindow = "Crop Window"; if(savedPoint.x > x) { int temp = savedPoint.x; savedPoint.x = x; x = temp; } if(savedPoint.y > y) { int temp = savedPoint.y; savedPoint.y = y; y = temp; } int diffX = abs(x-savedPoint.x); int diffY = abs(y-savedPoint.y); cvNamedWindow(cropWindow, CV_WINDOW_AUTOSIZE); IplImage* croppedImage = cvCreateImage(cvSize(diffX, diffY), IPL_DEPTH_8U, 1); IplImage* src_red = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); IplImage* src_green = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); IplImage* src_blue = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); cvSplit(sourceImage, src_blue, src_green, src_red, NULL); for(i = 0; i < diffY; i++) { for(j = 0; j < diffX; j++) { r = cvGetReal2D(src_red, savedPoint.y+i, savedPoint.x+j); g = cvGetReal2D(src_green, savedPoint.y+i, savedPoint.x+j); b = cvGetReal2D(src_blue, savedPoint.y+i, savedPoint.x+j); avg = (r+g+b)/3; cvSetReal2D(croppedImage, i, j, avg); } } cvShowImage(cropWindow, croppedImage); cvReleaseImage(&croppedImage); flag = FALSE; }}
공유하기
게시글 관리
오늘의 사건사고
저작자표시
비영리
변경금지
PREV
1
NEXT
+ Recent posts
Powered by
Tistory
, Designed by
wallel
Rss Feed
and
Twitter
,
Facebook
,
Youtube
,
Google+
티스토리툴바