Opencv: CPP ์นด๋ฉ”๋ผ ๋ณด์ • ์˜ˆ์ œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์— ๋งŒ๋“  2016๋…„ 05์›” 04์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: opencv/opencv

์•ˆ๋…•ํ•˜์„ธ์š”, ๋จผ์ € Q&A ํŽ˜์ด์ง€์— ์งˆ๋ฌธ์„ ํ•˜๊ณ  ์‹ถ์€๋ฐ ๋‹ค์šด๋˜์–ด ์—ฌ๊ธฐ์— ๋จผ์ € ๊ธ€์„ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

์นด๋ฉ”๋ผ ๋ณด์ •์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ C++ ์ž์Šต์„œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ Windows(3.1.0 ๋ฐ”์ด๋„ˆ๋ฆฌ) ๋ฐ Linux(๊ธฐ๋ณธ Ubuntu 14.04์—์„œ github repo์˜ ์ตœ์‹  ํด๋ก ) ๋ชจ๋‘์—์„œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์ • ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋™์ผํ•œ ์„ค์ •์„ ์•„๋Š” ํ•œ ์œ ์‚ฌํ•œ Python ์ž์Šต์„œ( $OPENCV_DIR/samples/python/calibrate.py )๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”

  • OpenCV ๋ฒ„์ „: 3.1.0
  • ํ˜ธ์ŠคํŠธ OS: Linux(Ubuntu 14.04) [์ตœ๊ทผ github ์†Œ์Šค์—์„œ ๋นŒ๋“œ] ๋ฐ Windows 10 [sourceforge ๋ฐ”์ด๋„ˆ๋ฆฌ]

    OpenCV ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์–ด๋Š ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๊นŒ?

์นด๋ฉ”๋ผ ๋ณด์ •, ํ•ต์‹ฌ.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

settings.xml์— ์ œ๊ณต๋œ ๊ฒฝ๋กœ/ํŒŒ์ผ์— ์นด๋ฉ”๋ผ ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ

์‹ค์ œ ํ–‰๋™

$ ./camera_calibration settings.xml
This is a camera calibration sample.
Usage: calibration configurationFile
Near the sample file you'll find the configuration file, which has detailed help of how to edit it.  It may be any OpenCV supported file format XML/YAML.
OpenCV Error: Assertion failed (src.size == dst.size && src.channels() == dst.channels()) in cvConvertScale, file $OPENCV_DIR/modules/core/src/convert.cpp, line 5474
terminate called after throwing an instance of 'cv::Exception'
  what():  $OPENCV_DIR/modules/core/src/convert.cpp:5474: error: (-215) src.size == dst.size && src.channels() == dst.channels() in function cvConvertScale


Aborted (core dumped)

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ ์˜ˆ์ œ / ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„

์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ปดํŒŒ์ผ๋˜๋Š” ์ „์ฒด ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

  1. ์—์„œ ์ƒ˜ํ”Œ ๊ต์ • ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐ์น˜ $OPENCV_DIR/samples/data ํด๋”์— images
  2. $OPENCV_DIR/samples/cpp/tutorial_code/calib3d/camera_calbration ์—์„œ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ƒ˜ํ”Œ ์ฝ”๋“œ ๋ณต์‚ฌ
  3. cmake . ๋‹ค์Œ์— make ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. CMakeLists.txt๋Š” http://docs.opencv.org/3.1.0/db/df5/tutorial_linux_gcc_cmake.html#gsc.tab =0์— ์ œ๊ณต๋œ ์˜ˆ์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  4. ./camera_calibration settings.xml , ๋˜๋Š” Windows camera_calibration.exe settings.xml
  5. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ 

image_list.xml์— ๋‚˜์—ด๋œ ๋Œ€๋กœ $OPENCV_DIR/samples/data (left1-14.jpg ๋ฐ right1-14.jpg)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ๋ณด์ • ์ด๋ฏธ์ง€ ์‚ฌ์šฉ

๊ด€๋ จ ํŒŒ์ผ

ํ•„์š”ํ•œ ๊ฒฝ์šฐ xml์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด .txt ์—์„œ ์ด๋ฆ„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
์„ค์ •.xml.txt
image_list.xml.txt
CMake:
CMakeLists.txt

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

image_list.xml์— ์ž˜๋ชป๋œ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

images/left01.jpg
images/left02.jpg
images/left03.jpg
...

๋ชจ๋“  3 ๋Œ“๊ธ€

image_list.xml์— ์ž˜๋ชป๋œ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

images/left01.jpg
images/left02.jpg
images/left03.jpg
...

๋‚˜๋Š”์ด ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.0.0-pre) /opt/opencv/modules/core/src/convert_c.cpp:112: error: (-215:Assertion failed) src.size == dst.size && src.channels() == dst.channels() in function 'cvConvertScale'

in_VID5.xml

...
        <BoardSize_Width>9</BoardSize_Width>
        <BoardSize_Height>13</BoardSize_Height>
...
<Input>"/home/monxarat/projects/test/image/calibration/img/VID5.xml"</Input>
...

VID5.ml

<?xml version="1.0"?>
<opencv_storage>
    <images>
      /home/monxarat/projects/test/image/calibration/img/chess_6.jpg
       /home/monxarat/projects/test/image/calibration/img/chess_6.jpg
    </images>
</opencv_storage>

์˜์ƒ
chess_6

n - 1 ๋ฐ m - 1 config size_width ๋ฐ size_height ๋ฅผ ์„ค์ •ํ•˜๋ฉด ์‹คํ–‰์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค(n์€ ์‹ค์ œ ๋ณด๋“œ ํฌ๊ธฐ์˜ ์—ด ์ˆ˜, m์€ ํ–‰ ์ˆ˜ ์‹ค์ œ ๋ณด๋“œ ํฌ๊ธฐ)

<BoardSize_Width>12</BoardSize_Width>
<BoardSize_Height>8</BoardSize_Height>
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰