๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

OpenCV ์ฃผ์š” ์šฉ์–ด (imread, imwrite ... ) ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/Image Processing

OpenCV ์ฃผ์š” ์šฉ์–ด (imread, imwrite ... )

์ง•์ง•์•ŒํŒŒ์นด 2022. 10. 20. 14:49
728x90
๋ฐ˜์‘ํ˜•

221020 ์ž‘์„ฑ

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” redorangeyellowy๋‹˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค>

https://velog.io/@redorangeyellowy/ch01-Python-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-OpenCV-%EC%A3%BC%EC%9A%94-%ED%95%A8%EC%88%98-%EC%84%A4%EB%AA%85

 

[ch01] Python ์‹œ์ž‘ํ•˜๊ธฐ - OpenCV ์ฃผ์š” ํ•จ์ˆ˜ ์„ค๋ช…

OpenCV API ๋„์›€๋ง ์ฐพ๊ธฐOpenCV ์ตœ์‹  ๋„์›€๋ง : http://docs.opencv.org/master/OpenCV ๋„์›€๋ง ์‚ฌ์ดํŠธ์—์„œ ์šฐ์ธก ์ƒ๋‹จ ๊ฒ€์ƒ‰์ฐฝ ํ™œ์šฉ์˜์ƒ ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐfilename : ๋ถˆ๋Ÿฌ์˜ฌ ์˜์ƒ ํŒŒ์ผ ์ด๋ฆ„ (๋ฌธ์ž์—ด)flags : ์˜์ƒ ํŒŒ์ผ

velog.io

 

 

 

 

 

๐Ÿค— ์˜์ƒ ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

cv2.imread(filename, flags=None) -> retval
  • filename : ๋ถˆ๋Ÿฌ์˜ฌ ์˜์ƒ ํŒŒ์ผ ์ด๋ฆ„ (๋ฌธ์ž์—ด)
  • flags : ์˜์ƒ ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์˜ต์…˜ ํ”Œ๋ž˜๊ทธ
    • cv2.IMREAD_COLOR
      • BGR ์ปฌ๋Ÿฌ ์˜์ƒ์œผ๋กœ ์ฝ๊ธฐ (๊ธฐ๋ณธ๊ฐ’)
      • shape = (rows, cols, 3)
    • cv2.IMREAD_GRAYSCALE
      • ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ์˜์ƒ์œผ๋กœ ์ฝ๊ธฐ
      • shape = (rows, cols)
    • cv2.IMREAD_UNCHANGED
    • ์˜์ƒ ํŒŒ์ผ ์†์„ฑ ๊ทธ๋Œ€๋กœ ์ฝ๊ธฐ
    • e.g. ํˆฌ๋ช…ํ•œ PNG ํŒŒ์ผ
    • shape = (rows, cols, 4)
  • retval : ๋ถˆ๋Ÿฌ์˜จ ์˜์ƒ ๋ฐ์ดํ„ฐ (numpy.ndarray)

 

๐Ÿค— ์˜์ƒ ํŒŒ์ผ ์ €์žฅํ•˜๊ธฐ

cv2.imwrite(filename, img, params=None) -> retval
  • filename : ์ €์žฅํ•  ์˜์ƒ ํŒŒ์ผ ์ด๋ฆ„ (๋ฌธ์ž์—ด)
  • img : ์ €์žฅํ•  ์˜์ƒ ๋ฐ์ดํ„ฐ (numpy.ndarray)
  • params : ํŒŒ์ผ ์ €์žฅ ์˜ต์…˜ ์ง€์ • (์†์„ฑ & ๊ฐ’์˜ ์ •์ˆ˜ ์Œ)
  • e.g) [cv2.IMWRITE_JPEG_QUALITY, 90] : JPG ํŒŒ์ผ ์••์ถ•๋ฅ ์„ 90% ๋กœ ์ง€์ • -> ์••์ถ•๋ฅ  ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

 

๐Ÿค— ์ƒˆ ์ฐฝ ๋„์šฐ๊ธฐ

cv2.namedWindow(winname, flags=None) -> None
  • winname : ์ฐฝ ๊ณ ์œ  ์ด๋ฆ„ (๋ฌธ์ž์—ด)
  • flags: ์ฐฝ ์†์„ฑ ์ง€์ • ํ”Œ๋ž˜๊ทธ
    • cv2.WINDOW_NORMAL : ์˜์ƒ ํฌ๊ธฐ๋ฅผ ์ฐฝ ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ง€์ •
    • cv2.WINDOW_AUTOSIZE : ์ฐฝ ํฌ๊ธฐ๋ฅผ ์˜์ƒ ํฌ๊ธฐ์— ๋งž๊ฒŒ ๋ณ€๊ฒฝ (๊ธฐ๋ณธ๊ฐ’)

 

๐Ÿค— ์ฐฝ ๋‹ซ๊ธฐ

cv2.destroyWindow(winname) -> None
cv2.destroyAllWindows() -> None
  • winname : ๋‹ซ๊ณ ์ž ํ•˜๋Š” ์ฐฝ ์ด๋ฆ„
  • ์ฐธ๊ณ ์‚ฌํ•ญ
    • cv2.destroyWindow() ํ•จ์ˆ˜๋Š” ์ง€์ •ํ•œ ์ฐฝ ํ•˜๋‚˜๋งŒ ๋‹ซ๊ณ , cv2.destroyAllWindows() ํ•จ์ˆ˜๋Š” ์—ด๋ ค์žˆ๋Š” ๋ชจ๋“  ์ฐฝ์„ ๋‹ซ์Œ
    • ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ ์šด์˜ ์ฒด์ œ์— ์˜ํ•ด ์—ด๋ ค ์žˆ๋Š” ๋ชจ๋“  ์ฐฝ์ด ์ž๋™์œผ๋กœ ๋‹ซํž˜

 

๐Ÿค— ์ฐฝ ์œ„์น˜ ์ด๋™

cv2.moveWindow(winname, x, y ) -> None
  • winname : ์ฐฝ ์ด๋ฆ„
  • x, y : ์ด๋™ํ•  ์œ„์น˜ ์ขŒํ‘œ

 

๐Ÿค— ์ฐฝ ํฌ๊ธฐ ๋ณ€๊ฒฝ

cv2.resizeWindow(winname, width, height ) -> None
  • winname: ์ฐฝ ์ด๋ฆ„
  • width: ๋ณ€๊ฒฝํ•  ์ฐฝ์˜ ๊ฐ€๋กœ ํฌ๊ธฐ
  • height: ๋ณ€๊ฒฝํ•  ์ฐฝ์˜ ์„ธ๋กœ ํฌ๊ธฐ
  • ์ฐธ๊ณ  ์‚ฌํ•ญ
    • ์ฐฝ ์ƒ์„ฑ ์‹œ cv2.WINDOW_NORMAL ์†์„ฑ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ๋™์ž‘
    • ์˜์ƒ ์ถœ๋ ฅ ๋ถ€๋ถ„์˜ ํฌ๊ธฐ๋งŒ์„ ๊ณ ๋ คํ•จ (์ œ๋ชฉ ํ‘œ์‹œ์ค„ , ์ฐฝ ๊ฒฝ๊ณ„๋Š” ๊ณ ๋ ค๋˜์ง€ ์•Š์Œ)

 

๐Ÿค— ์˜์ƒ ์ถœ๋ ฅํ•˜๊ธฐ

cv2.imshow(winname, mat) -> None
  • winname : ์˜์ƒ์„ ์ถœ๋ ฅํ•  ๋Œ€์ƒ ์ฐฝ ์ด๋ฆ„
  • mat : ์ถœ๋ ฅํ•  ์˜์ƒ ๋ฐ์ดํ„ฐ (numpy.ndarray)
  • ์ฐธ๊ณ  ์‚ฌํ•ญ
    • uint16, int32 ์ž๋ฃŒํ˜• ํ–‰๋ ฌ์˜ ๊ฒฝ์šฐ, ํ–‰๋ ฌ ์›์†Œ ๊ฐ’์„ 255๋กœ ๋‚˜๋ˆ ์„œ ์ถœ๋ ฅ
    • float32, float64 ์ž๋ฃŒํ˜• ํ–‰๋ ฌ์˜ ๊ฒฝ์šฐ, ํ–‰๋ ฌ ์›์†Œ ๊ฐ’์— 255๋ฅผ ๊ณฑํ•ด์„œ ์ถœ๋ ฅ

 

๐Ÿค— ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ๋Œ€๊ธฐ

cv2.waitKey(delay=None) -> retval
while True:
if cv2.waitKey() == ord ('q'): break
  • delay : ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ๋Œ€๊ธฐ ์‹œ๊ฐ„. delay ≤ 0 ์ด๋ฉด ๋ฌดํ•œํžˆ ๊ธฐ๋‹ค๋ฆผ. ๊ธฐ๋ณธ๊ฐ’์€ 0.
  • retval : ๋ˆŒ๋ฆฐ ํ‚ค ๊ฐ’ (ASCII code). ํ‚ค๊ฐ€ ๋ˆŒ๋ฆฌ์ง€ ์•Š์œผ๋ฉด -1.
  • ์ฐธ๊ณ  ์‚ฌํ•ญ
    • cv2.waitKey() ํ•จ์ˆ˜๋Š” OpenCV ์ฐฝ์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์„ ๋•Œ ๋™์ž‘ํ•จ
    • ํŠน์ • ํ‚ค ์ž…๋ ฅ์„ ํ™•์ธํ•˜๋ ค๋ฉด ord () ํ•จ์ˆ˜๋ฅผ ์ด์šฉ
    • ์ฃผ์š” ํŠน์ˆ˜ํ‚ค ์ฝ”๋“œ : 27(ESC), 13(ENTER), 9(TAB)
728x90
๋ฐ˜์‘ํ˜•
Comments