Posted by: sirivy | September 10, 2009

compile Levmar-2.4 without LAPACK on windows

There are few steps to compile levmar-2.4 source code.

1. You can download source code from here. (look for “version 2.4” and then click to download)

2. Extract file to your desire directory.

3. Next, you have to modify three lines(line 22 , 23 and 32) in Makefile.vc

  • Comment this line: (line 22)
    LAPACKLIBS_PATH=C:\src\lib # WHEN USING LAPACK, CHANGE THIS TO WHERE YOUR COMPILED LIBS ARE!
    Like this:
    #LAPACKLIBS_PATH=C:\src\lib # WHEN USING LAPACK, CHANGE THIS TO WHERE YOUR COMPILED LIBS ARE!
  • Modify this line a bit:(line 23)
    LDFLAGS=/link /subsystem:console /opt:ref /libpath:$(LAPACKLIBS_PATH) /libpath:.
    to be like this:
    LDFLAGS=/link /subsystem:console /opt:ref  /libpath:.
  • Comment out this line:(line 32)
    LAPACKLIBS=clapack.lib blas.lib libF77.lib libI77.lib
    like this:
    #LAPACKLIBS=clapack.lib blas.lib libF77.lib libI77.lib

4. Next, you have to follow their readme file by comment out one line in file lm.h

  • Comment out this line
    #define HAVE_LAPACK /* use LAPACK */
    to be like this
    //#define HAVE_LAPACK /* use LAPACK */

5. Finally, you can try to compile in command prompt.

  • Go to your levmar-2.4 directory then type
    nmake /f  Makefile.vc

Finish! now you can test with your  lmdemo.exe

Good Luck ^_^

Advertisements
Posted by: sirivy | September 4, 2009

Installation OpenCV on Ubuntu 9.04

วันนี้ทำการลง openCV ใหม่หลังจากลงอุบุนตุใหม่ ประกอบกับจำไม่ได้ว่า ครั้งก่อนลงไปแล้วไม่ได้จดวิธีลงไว้ ลงอีกครั้งเลยขอจดไว้ก่อน เผื่อคราวหน้า ลงอุบุนตุใหม่จะได้ไม่มานั่งงมอีก

อ้างอิงการลง openCV บน Ubuntu 9.04 จาก

http://webeng.cs.ait.ac.th/cvwiki/opencv:tutorial:install:ubuntu

(Thanks อ.แมท(Dr.Matthew@AIT)for very useful installation guide)
ซึ่งมีขั้นตอนดังนี้

1. ใช้ synaptic ติดตั้ง libgstreamer0.10-dev และ libdc1394-13-dev
2. ดาวน์โหลด opencv 1.1.0 ได้จาก openCV wiki
3. แตกไฟล์ opencv-1.1pre1.tar.gz โดยใช้คำสั่ง tar -xvfz opencv-1.1pre1.tar.gz
4. ในไดเรกทอรี่ของ opencv-1.1.0 พิมพ์คำสั่ง(ให้เหมือนอันนี้เลยนะ เครื่องหมาย=พิมพ์ให้ติดprefix)
./configure –prefix=${HOME}/opencv –without-xine –without-quicktime –with-gstreamer –with-1394libs –with-v4l
5. ในไดเรกทอรี่ของ opencv-1.1.0 พิมพ์คำสั่ง
make
6. เมื่อ make เสร็จ ก็พิมพ์
make install
เพื่อติดตั้ง opencv ได้เลยโดย opencv จะไปติดตั้งอยู่ที่ /home/jednipat/opencv ตามไดเรคทอรี่ที่ระบุไว้ตอนรัน ./configure
7. พิมพ์
export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

เมื่อ make install เสร็จ ก็ลองมารัน example ที่ opnecv ให้มาโดยคอมไพล์ดังนี้

g++ -o outputname yourfilename.c -I /home/jednipat/opencv/include/opencv/ -lhighgui -L /home/jednipat/opencv/lib/

กรณีของผมคอมไพล์ผ่านแต่พอรันแล้ว เจอ error ดังนี้ (เนื่องจากผมลืมทำข้อ 7)

error while loading shared libraries: libhighgui.so.2: cannot open
shared object file: No such file or directory

เลยค้นวิธีแก้ได้มาจากบล็อกของ dsin (พี่พง) สาเหตุเป็นเพราะว่ายังไม่ได้ export LD_LIBRARY_PATH ซึ่งก็ทำได้ดังนี้

export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

จากนั้นทำการเปิดไฟล์ .bashrc ขึ้นมาแล้วเพิ่มบรรทัดนี้เข้าไปในไฟล์ .bashrc แล้วก็ทำการ save (พิมพ์ gedit .bashrc ใน home directory เพื่อทำการแก้ไขไฟล์ .bashrc เพราะจะได้ไม่ต้องมานั่งพิมพ์ export ทุกครั้งไปที่จะใช้งาน )

ที่นี้คิดว่าน่าจะรันได้ตามปกติ ลองคอมไพล์และรัน example ดูอีกที คอมไพล์ผ่าน
แต่พอรันปุ๊ป เจอกับ

OpenCV ERROR: Unspecified error (The function is not implemented.
Rebuild the library with Windows, GTK+ 2.x or Carbon support)
in function cvNamedWindow, window.cpp(71)
Terminating the application…
Segmentation fault

อ๊ากก… ค้นไปค้นมาอีกก็ได้คำแนะนำจากเว็บนี้ < – – คลิก

คอมเมนต์สุดท้ายบอกไว้ว่าสาเหตุมาจากตอนรัน ./configure และ make ไม่มี
gtk+ lib dev ไม่มีเขาแนะนำให้ remove openCV ออกก่อน แล้วไปลง
libgtk2.0-dev (เข้า synaptic package manager แล้ว search
คำว่า libgtk2.0-dev ละก็ mark for installation - > apply )

เมื่อลง libgtk2.0-dev เสร็จให้ uninstall openCV ก่อนโดยพิมพ์ make uninstall
ในไดเรคทอรี่ opencv-1.1.0 จากนั้นเพื่อความชัวร์ควรจะ restart เครื่องก่อน
(ผมไม่รีสตาร์ทเครื่อง make ใหม่ก็เจอปัญหาเดิม เลยลอง รีสตาร์ทเครื่อง แล้วทำใหม่)

แล้วทำการ ./configure , make , make install อีกที

1> ./configure blablabla..
2> make
3> make install
4> export LD_LIBRARY_PATH=/home/jednipat/opencv/lib

จากนั้นไปยัง directory /home/jednipat/opencv-1.1.0/samples/c
แล้วลองคอมไพล์ไฟล์ใด ๆ ผมเลือกไฟล์ตัวอย่างการใช้งาน SURF descriptor
ชื่อไฟล์ว่า find_obj.cpp คอมไพล์ด้วยคำสั่งดังนี้

g++ find_obj.cpp -o test -I /home/jednipat/opencv/include/opencv/ -lhighgui
-L /home/jednipat/opencv/lib/

จากนั้นรัน ./test เพื่อดูผลลัพธ์ของโปรแกรม

เย้… สำเร็จ..

Posted by: sirivy | April 9, 2009

How to export object in maya to openGL?

1. Download maya script export/import from here

2. After you open maya file , you should make sure that your object in maya is polygons.

(i.e. if your object is NURBS , you should convert to polygon)

To convert NURBS to polygon, there are two steps.

– Firstly , select your NURBS surface

– Secondly, goto menu bar and click at –> modify –> convert –> NURBS to polygons

3. Open maya script from script editor. After you already loaded maya script to script editor,

click at execute button in script editor and specify your path and file name.

( Note: if you can’t find script editor , you can click at Display–> UI Elements –> Command Line)

4. Check your .obj file and enjoy to import to openGL. ^_^

Posted by: sirivy | April 1, 2009

Compile yacc & lex file with option.

1st> yacc -d yaccfilename.y

=> This command will generate 2 following files “y.tab.h” and “y.tab.c”.

If you meet error ” ‘yylval’ undeclared (first use in this function)” ,

you should try to compile yacc file with option d. Becuase option d will also produce header file(y.tab.h) for you.

2nd> lex lexfilename.l

=> This command will generate lex.yy.c.

3rd> gcc y.tab.c lex.yy.c -ll -ly -o arbitraryoutputname

4th> ./arbitraryoutputname

Posted by: sirivy | March 28, 2009

Lex Simple Example

CODE: Reference from LEX & YACC books

========================

%{
char* yytext;
%}
%%
[\t]+ /*ignore whitespace*/;

is |
am |
are |
were |
was |
go      { printf(“%s:is a verb\n”,yytext);}

very |
simply |
gently |
quietly |
calmly |
angrily {printf(“%s: is and adverb\n”,yytext);}

to |
from |
behind |
above |
between |
below {printf(“%s: is a preposition\n”,yytext);}

if |
then |
and |
but |
or  { printf(“%s: is a conjunction\n”,yytext);}

their |
my |
your |
his |
her |
its {printf(“%s: is an adjective\n”,yytext);}

I |
you |
he |
she |
we |
they {printf(“%s: is a pronoun\n”,yytext);}

[a-zA-Z]+ {printf(“%s: is not a verb\n”,yytext);}

.|\n    {ECHO; /*normal default anyway*/}
%%

main()
{
yylex();
}

========================

This example code will scan input and if input match with pattern program will print type of each word.

*NOTE: In specifying pattern , you must have space before “|” symbol
(i.e.   is|   —>it  didn’t work You will meet unrecognized rule   BUT is  |  –>it works )

Posted by: sirivy | March 27, 2009

Lex

STRUCTURE OF LEX FILES :

——————————————————————————————————–

%{

/*DEFINITION SECTION*/

%}

%%

/*RULES SECTION is made of two parts: pattern and action*/

/*Action will be executed if pattern is recognized by Lexer*/

/*Pattern is written in form of Regular Expression*/

%%

/*USER SUB-ROUTINE SECTION*/

/* include main program Here!*/

———————————————————————————————————

INSTRUCTION FOR COMPILE LEX FILE:

1.  lex lexfilename.l

Aflter your compilation succeeded , lex will generate file yy.lex.c for you. Next job is using gcc to compile this C file.

2.  gcc lex.yy.c -o arbitaryOutputName -ll

-ll to link to Lex library

3.  ./arbitaryOutputName

To test your program.

————————————————————————————————

I feel sleepy. Let’s continue tomorrow. -_- zZZZ

Posted by: sirivy | March 27, 2009

Grammar Beta Version

Program_list –> Program_list Program
Program_list –> Program
Program –> Declare; | Assign; | Condition | Loop
Declare –> Type variable | Type variable = exp
Variable –> id | Array
Array –> Array_size]
Array_size –> id [size
Type –> int | float | char | string
Assign –> Statement
Statement –> id = expression
Statement –> expression
expression –> expression + term | expression – term | term
term –> term * fac | term / fac | factor
factor –> (expression)
factor –> -factor | id | number | char | string
Control –> If_cond; | If_else_cond;
If_cond; –> if(condition) command
If_else_cond; –> if(condition) command else command
condition –> sub_cond; m_op subcondition | p_op subcondtion | sub_condition
m_op –> and|or
p_op –> not
sub_condi –> (sub_condition) | DATA relop DATA
sub_condi –> true | false
DATA –> id | expression | number | char | string
command –> Program | { Program }

Loop –> while_Loop | for_Loop
while_Loop –> while (condition) command
For_Loop –> For(Declare ; condition; Assign ) command

Posted by: sirivy | October 25, 2008

วิธีใช้ External Method กับ ZOPE 2.9

1. หาโฟลเดอร์ชื่อ Extensions ใน Plone Directory ใน Ubuntu ซึ่งจะอยู่ที่ /Plone/zinstance/parts/zope2/Extensions
2. นำไฟล์ .py (python) ที่ต้องการใช้เป็น external method มาวางไว้ในโฟลเดอร์ Extensions (ซึ่งแรกเริ่มเดิมที ในโฟลเดอร์นี้จะมีไฟล์ README.txt อยู่มีข้อความในไฟล์ว่า “Place files containing code for External Method objects in this directory.”)
3. ไปยังหน้า ZOPE manage http://localhost/manage เพื่อทำการ Add External Method โดยเลือก External Method ใน Dropdown List จากนั้นคลิกปุ่ม Add
4. พอมาถึงหน้า Add External Method จะมีฟิลด์อยู่ 4 ฟิลด์ให้กรอก
-ID ให้ใส่ชื่อ ID ใส่อะไรก็ได้(แต่ให้สื่อความหมายนิดส์ก็ดี)
-TITLE ใส่อะไรก็ได้เช่นกัน
-Module Name อันนี้ใส่อะไรก็ได้ไม่ได้แล้ว ต้องใส่ชื่อไฟล์ที่เรานำไปวางไว้ใน Extensions โฟลเดอร์โดยไม่ใส่ .py นะใส่แต่ชื่อไฟล์
-Function Name อันนี้ใส่อะรไรก็ได้ไม่ได้อีกเช่นกัน ต้องใส่ชื่อ Action ในไฟล์ .py ที่เราระบุ
ยกตัวอย่างเช่น ในไฟล์ hello.py มีการประกาศ def helloWorld เราก็ต้องใส่ Function name ว่า helloworld และใส่ Module Name เป็น hello เมื่อกรอกข้อมูลครบเสร็จเรียบร้อยก็ทำการกดแท็บ Test กันได้เลย

ปล.หากอ่านแล้วยังไม่ค่อยเข้าใจให้ไปอ่านต่อได้ที่นี่นะ คลิก

Posted by: sirivy | October 3, 2008

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

« Newer Posts

Categories