OpenCV 라이선스에 관한 질문입니다. (V4L2 라이선스 연관)

oblab의 이미지

우분투 환경에서 테스트를 하고 있습니다
웹캠을 실시간출력하는 프로그램을 만들고 있는데요

처음에는 V4L2를 이용하여 만들다가 라이선스때문에 OpenCV를 이용하게 됬습니다.

V4L2 는 GPL 라이선스로 배포시 코드를 공개해야하는 의무가 있고
OpenCV는 BSD 라이선스로 배포시 코드공개는 자율에 맡긴다 정도로 저는 이해를 하고 있는데요

OpenCV로 기본적인 웹캠플레이 프로그램을 만들고(인터넷에 검색하면 예제나오는것) 실행까지 확인했습니다.
실행파일을 ldd 명령어로 의존성 및 참조라이브러리를 확인해볼려고했는데요

많은 리스트 항목에

libv4l1.so.0 => /usr/lib/.......
libv4l2.so.0 => /usr/lib/.......

이 눈에 들어오더라구요

OpenCV도 리눅스 환경에서는 내부적으로 V4L 을 사용하는것 같은데요
의존성확인으로는 OpenCV 라이브러리를 사용하게 되도 속으로는 V4L을 사용하게 되는것 같습니다.

이런 상황에서 제가만든 프로그램은 어떤 라이선스의 영향을 받는건가요?
OpenCV만을 사용했는데 V4L이 라이브러리안에서 사용되고 있는상황인데
OpenCV의 BSD 라이선스만을 사용중이라고해야하는건지 내부적으로 V4L이 사용되니 GPL 라이선스를 따라야하는건지..의문입니다.

OpenCV홈페이지에서는 공식적으로 BSD라이선스라 했으니 다른거 신경쓰지않고 BSD 라이선스를 적용해야 따라도 되는건가요?

Necromancer의 이미지

V4L2는 라이브러리가 아니라 커널 API로 알고 있는데요. API 호출하는 프로그램은 적용 안될껄요.

커널 자체는 GPL입니다.
리눅스용 지포스 드라이버 같은 독점드라이버들도 엄밀히 말하자면 라이센스 위반입니다.
이때문에 요즘 리눅스 드라이버 보면 그거 피할려고 드라이버 소스 다 공개해두고 펌웨어로 중요부분을 감추는 식으로 하는 경우가 많이 보이고 있습니다.

Written By the Black Knight of Destruction

oblab의 이미지

라이센스가...생각보다 복잡하네요

chanik의 이미지

호기심이 나서 잠시 찾아봤습니다.

https://patchwork.ozlabs.org/patch/384574/

Starting with the 2.4.7 release, for V4L support, OpenCV does not
requires a libv4l dependency for its V4L support.
 
So, it now provides 2 distincts knobs for this: WITH_V4L and a new
one: WITH_LIBV4L.
 
This patch takes advantage of this new knob and libv4l support is
now automatically enabled only if the libv4l package is enabled.
 
In OpenCV, the logic behind this is:
- using libv4l if available,
- otherwise, use v4l2 or v4l API from the kernel if available.

opencv는 BSD 라이센스이고 libv4l 라이브러리는 GPL 라이센스를 쓰는데,
위 글을 보니 v4l2를 쓰기 위해 꼭 libv4l을 거쳐야 하는 것은 아닌 모양입니다.

opencv를 아래와 같이 빌드해보고 ldd로 테스트해서 libv4l 의존성이 사라진다면
libv4l 없이 v4l2를 지원하는 셈이니 라이센스 고민을 피할 수 있겠네요.

$ cmake -DWITH_V4L=ON -DWITH_LIBV4L=OFF ..

참고로, 빌드옵션에 따라 LGPL/GPL 여부가 결정되는 ffmpeg을 libv4l 없이 빌드해보니
여전히 v4l2를 지원하는 걸로 나오고 자체라이센스도 LGPL을 유지하더군요.

oblab의 이미지

좋은정보 감사합니다. 라이선스가 그냥 알기보다 상당히 복잡하네요..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.