오픈소스 OCR로 우분투에 패키지로 설치가 가능하고

gimagereader 라는 frontend도 있으니 참고를..

[링크 : https://sourceforge.net/projects/gimagereader/]

 

간단한 사용법은 아래와 같이 파일명 - -l eng 해주면 되는데, 아마 -를 넣어서 stdout으로 출력하라는걸지도?

$ tesseract images/eurotext.png - -l eng

[링크 : https://tesseract-ocr.github.io/tessdoc/Command-Line-Usage.html]

 

psm은 어떤식으로 읽을지 모드를 설정해주는데 OSD(Orientation and Script Detection) 이라는게

있냐 없냐로, 2문자 까지 인식하게 할 순 있다(--psm 1)

+

psm 10으로 하면 단문자도 인식하게 설정이 가능하다

$ tesseract --help-extra
Usage:
  tesseract --help | --help-extra | --help-psm | --help-oem | --version
  tesseract --list-langs [--tessdata-dir PATH]
  tesseract --print-parameters [options...] [configfile...]
  tesseract imagename|imagelist|stdin outputbase|stdout [options...] [configfile...]

OCR options:
  --tessdata-dir PATH   Specify the location of tessdata path.
  --user-words PATH     Specify the location of user words file.
  --user-patterns PATH  Specify the location of user patterns file.
  --dpi VALUE           Specify DPI for input image.
  -l LANG[+LANG]        Specify language(s) used for OCR.
  -c VAR=VALUE          Set value for config variables.
                        Multiple -c arguments are allowed.
  --psm NUM             Specify page segmentation mode.
  --oem NUM             Specify OCR Engine mode.
NOTE: These options must occur before any configfile.

Page segmentation modes:
  0    Orientation and script detection (OSD) only.
  1    Automatic page segmentation with OSD.
  2    Automatic page segmentation, but no OSD, or OCR. (not implemented)
  3    Fully automatic page segmentation, but no OSD. (Default)
  4    Assume a single column of text of variable sizes.
  5    Assume a single uniform block of vertically aligned text.
  6    Assume a single uniform block of text.
  7    Treat the image as a single text line.
  8    Treat the image as a single word.
  9    Treat the image as a single word in a circle.
 10    Treat the image as a single character.
 11    Sparse text. Find as much text as possible in no particular order.
 12    Sparse text with OSD.
 13    Raw line. Treat the image as a single text line,
       bypassing hacks that are Tesseract-specific.

OCR Engine modes: (see https://github.com/tesseract-ocr/tesseract/wiki#linux)
  0    Legacy engine only.
  1    Neural nets LSTM engine only.
  2    Legacy + LSTM engines.
  3    Default, based on what is available.

Single options:
  -h, --help            Show minimal help message.
  --help-extra          Show extra help for advanced users.
  --help-psm            Show page segmentation modes.
  --help-oem            Show OCR Engine modes.
  -v, --version         Show version information.
  --list-langs          List available languages for tesseract engine.
  --print-parameters    Print tesseract parameters.

[링크 : https://kokokorin-bigbox.tistory.com/53]

 

테스트 해보니 1 문자는 어떻게 하든 안되는 것 같은데 회피가 가능하려나?

 

 

$ tesseract a5.png - --psm 3
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 406
ak

$ tesseract a5.png - --psm 2
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 406
Orientation: 0
WritingDirection: 0
TextlineOrder: 2
Deskew angle: 0.0000

$ tesseract a5.png - --psm 1
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 406
Too few characters. Skipping this page
OSD: Weak margin (0.00) for 2 blob text block, but using orientation anyway: 0
ak


$ tesseract a5.png - --psm 0
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 406
Too few characters. Skipping this page
Warning. Invalid resolution 0 dpi. Using 70 instead.
Too few characters. Skipping this page
Error during processing.

 

 

 

$ tesseract a6.png - --psm 0
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 294
Too few characters. Skipping this page
Warning. Invalid resolution 0 dpi. Using 70 instead.
Too few characters. Skipping this page
Error during processing.

$ tesseract a6.png - --psm 1
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 294
Too few characters. Skipping this page
OSD: Weak margin (0.00) for 1 blob text block, but using orientation anyway: 0
Empty page!!
Estimating resolution as 294
Too few characters. Skipping this page
OSD: Weak margin (0.00) for 1 blob text block, but using orientation anyway: 0
Empty page!!

$ tesseract a6.png - --psm 2
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 294
Empty page!!

$ tesseract a6.png - --psm 3
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 294
Empty page!!
Estimating resolution as 294
Empty page!!

'프로그램 사용 > tesseract ocr' 카테고리의 다른 글

tesseract 버전별 차이?  (0) 2023.12.27
tesseract 학습 데이터  (0) 2023.12.27
tesseract on arm  (0) 2023.12.26
번호판 인식(tesseract)  (0) 2021.10.14
Posted by 구차니

Neural Network gstreamer인가?

 

NNStreamer provides a set of GStreamer plugins so developers may apply neural networks, attach related frameworks (including ROSIIOFlatBuffers, and Protocol Buffers), and manipulate tensor data streams in GStreamer pipelines easily and execute such pipelines efficiently

[링크 : https://nnstreamer.ai/#get-started]

'프로그램 사용 > gstreamer' 카테고리의 다른 글

gstreamer parse_launch  (0) 2024.01.11
gst-device-monitor-1.0  (0) 2023.12.06
gstremaer videobox + videomixer  (0) 2023.04.10
gst-inspector.c  (0) 2023.04.06
gstreamer videomixer 반쪽 성공  (0) 2023.03.27
Posted by 구차니

v4l2src 관련해서 기존에 웹캠에서 지원하는 모드들 찾는다고 고생했는데 간단한 유틸리티를 알게 됨 -_-

 

$ man gst-device-monitor-1.0
SYNOPSIS
       gst-device-monitor-1.0 [DEVICE_CLASSES[:FILTER_CAPS]] [DEVICE_CLASSES[:FILTER_CAPS]]

 

$ gst-device-monitor-1.0 Video/Source
Probing devices...


Device found:

name  : 720p HD Camera
class : Video/Source
caps  : image/jpeg, width=1280, height=720, framerate=30/1
        image/jpeg, width=640, height=480, framerate=30/1
        image/jpeg, width=640, height=360, framerate=30/1
        image/jpeg, width=352, height=288, framerate=30/1
        image/jpeg, width=320, height=240, framerate=30/1
        image/jpeg, width=160, height=120, framerate=30/1
        video/x-raw, format=YUY2, width=1280, height=720, framerate=10/1
        video/x-raw, format=YUY2, width=640, height=480, framerate=30/1
        video/x-raw, format=YUY2, width=640, height=360, framerate=30/1
        video/x-raw, format=YUY2, width=352, height=288, framerate=30/1
        video/x-raw, format=YUY2, width=320, height=240, framerate=30/1
        video/x-raw, format=YUY2, width=160, height=120, framerate=30/1
properties:
object.path = v4l2:/dev/video0
device.api = v4l2
media.class = Video/Source
device.product.id = 308
device.vendor.id = 11134
api.v4l2.path = /dev/video0
api.v4l2.cap.driver = uvcvideo
api.v4l2.cap.card = "720p\ HD\ Camera:\ 720p\ HD\ Camera"
api.v4l2.cap.bus_info = usb-0000:00:14.0-6
api.v4l2.cap.version = 6.2.16
api.v4l2.cap.capabilities = 84a00001
api.v4l2.cap.device-caps = 04200001
device.id = 33
node.name = v4l2_input.pci-0000_00_14.0-usb-0_6_1.0
node.description = "720p\ HD\ Camera"
factory.name = api.v4l2.source
node.pause-on-idle = false
factory.id = 10
client.id = 32
clock.quantum-limit = 8192
media.role = Camera
node.driver = true
object.id = 35
object.serial = 35
gst-launch-1.0 pipewiresrc path=35 ! ...

'프로그램 사용 > gstreamer' 카테고리의 다른 글

gstreamer parse_launch  (0) 2024.01.11
nnstreamer  (0) 2023.12.20
gstremaer videobox + videomixer  (0) 2023.04.10
gst-inspector.c  (0) 2023.04.06
gstreamer videomixer 반쪽 성공  (0) 2023.03.27
Posted by 구차니
프로그램 사용/minicom2023. 10. 24. 14:58

minicom으로 통신을 하는데(시리얼)

창을 넓혀도 top 등을 실행할때 창의 폭이 넓어지지 않을때

아래의 명령을 넣어주면 폭이 조절된다.

$ stty columns 150

[링크 : https://acet.pe.kr/17]

 

posix 표준은 아니지만 columns N 하면 된다.

# stty --help
Usage: stty [-F DEVICE | --file=DEVICE] [SETTING]...
  or:  stty [-F DEVICE | --file=DEVICE] [-a|--all]
  or:  stty [-F DEVICE | --file=DEVICE] [-g|--save]
Print or change terminal characteristics.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all          print all current settings in human-readable form
  -g, --save         print all current settings in a stty-readable form
  -F, --file=DEVICE  open and use the specified DEVICE instead of stdin
      --help     이 도움말을 표시하고 끝냅니다
      --version  버전 정보를 출력하고 끝냅니다

Optional - before SETTING indicates negation.  An * marks non-POSIX
settings.  The underlying system defines which settings are available.

Special characters:
 * discard CHAR  CHAR will toggle discarding of output
   eof CHAR      CHAR will send an end of file (terminate the input)
   eol CHAR      CHAR will end the line
 * eol2 CHAR     alternate CHAR for ending the line
   erase CHAR    CHAR will erase the last character typed
   intr CHAR     CHAR will send an interrupt signal
   kill CHAR     CHAR will erase the current line
 * lnext CHAR    CHAR will enter the next character quoted
   quit CHAR     CHAR will send a quit signal
 * rprnt CHAR    CHAR will redraw the current line
   start CHAR    CHAR will restart the output after stopping it
   stop CHAR     CHAR will stop the output
   susp CHAR     CHAR will send a terminal stop signal
 * swtch CHAR    CHAR will switch to a different shell layer
 * werase CHAR   CHAR will erase the last word typed

Special settings:
   N             set the input and output speeds to N bauds
 * cols N        tell the kernel that the terminal has N columns
 * columns N     same as cols N
 * [-]drain      wait for transmission before applying settings (on by default)
   ispeed N      set the input speed to N
 * line N        use line discipline N
   min N         with -icanon, set N characters minimum for a completed read
   ospeed N      set the output speed to N
 * rows N        tell the kernel that the terminal has N rows
 * size          print the number of rows and columns according to the kernel
   speed         print the terminal speed
   time N        with -icanon, set read timeout of N tenths of a second

'프로그램 사용 > minicom' 카테고리의 다른 글

minicom color  (0) 2024.11.06
minicom lf에 cr 붙이기  (0) 2023.01.05
minicom 16진수로 보기  (0) 2022.08.25
minicom 로그 저장하기  (0) 2021.09.16
minicom timestamp  (0) 2021.09.16
Posted by 구차니
프로그램 사용/Blender2023. 10. 20. 20:16

2.8에서는 삭제되어 2.79 까지만 남아있는 듯. 현재 3.x대로 이행되었으니 흔적도 없이 사라졌을 것 같다.

Following its removal from the official version of Blender, an unofficial fork of the game engine source code was created, named UPBGE.[4] This was done with the aim of maintaining and modernizing the engine. Since then, UPBGE has been updated with support for Blender's new realtime renderer, Eevee, and runs on top of Blender 3.0 source code.[5]

[링크 : https://en.wikipedia.org/wiki/Blender_Game_Engine]

[링크 : https://upbge.org/#/]

 

망할(!) GPL 때문에 없어질 수 밖에 없었을 듯.

그래서 unity가 신명나게 욕 먹고 대안으로 떠오르는게 BGE가 아니라 godot 게임엔진이 뜨는 듯

내장된 'Game engine save as runtime' 애드온을 사용하면 Windows용으로 빌드할 수 있다.

애드온으로 실행 파일을 만든 때에 GPL 라이선스에 따라 소스 코드를 무조건 까야 한다. BGE 라이센스 참고(영문). 요약하자면, 소프트웨어 및 소스 코드는 GNU GPL에 결합되어 있지만, 블렌더 파일(모델, 텍스처, 소리)은 그렇지 않다.

게임을 구성하는 파이썬 스크립트의 경우 개발자의 지적 재산은 맞지만 내부 에드온으로 빌드하면 GPL 소스 코드와 섞이기 때문에 그 권리가 모호해지는 문제가 있다. 즉, 빌드된 게임 프로그램이 GPL이 되어 버린다.

[링크 : https://namu.wiki/w/BGE]

 

The Godot Engine is a free, all-in-one, cross-platform game engine that makes it easy for you to create 2D and 3D games.

[링크 : https://godotengine.org/]

'프로그램 사용 > Blender' 카테고리의 다른 글

blender cad  (0) 2024.05.07
blender render node  (0) 2024.03.20
blender on macos  (0) 2022.05.24
big bunny blender project file  (0) 2022.05.22
블렌더 강좌? (유료)  (0) 2021.08.07
Posted by 구차니

한동안 신경끄고 살았는데

hwpx라는 사악한(!) 확장자도 추가되었다는걸 새삼 알게됨 -_-

 

[링크 : https://extensions.libreoffice.org/en/extensions/show/27504]

 

+

23.10.24

다운받아서 설치하니 java 11 없다고 배짼다. 깔아야 하나 -_-

 

openjsdk-11 으로는 안되니 패스~

$ sudo apt-get install openjdk-11-jdk

[링크 : https://codechacha.com/ko/ubuntu-install-open-jdk11/]

 

libreoffice-java-common 이라는 패키지로 별도의 java가 제공된다고.. 뭥미

$ sudo apt install libreoffice-java-common

[링크 : https://forums.zotero.org/discussion/97427/issue-with-libre-office-plugin-on-ubuntu-22-04]

Posted by 구차니

실험적으로 나온 결과를 N으로 나눠줘서 쓰고 있었는데

퍼시발의 규칙에 의해 개별 주파수의 진폭은 N개의 샘플에 의해 영향을 받게되고

진폭을 N으로 나누어 평준화해야 한다고 하는데 솔찍히 확 와닫는 소리는 아니다 -_ㅠ

 

[링크 : https://stackoverflow.com/questions/63211851/why-divide-the-output-of-numpy-fft-by-n]

[링크 : https://stackoverflow.com/questions/4855958/normalising-fft-data-fftw]

 

+

2024.08.01

[링크 : https://dsp.stackexchange.com/questions/75749/how-to-use-pffft-fft-library]

'프로그램 사용 > fft, fftw' 카테고리의 다른 글

pffft fft / ifft 테스트  (0) 2024.08.01
FFT RBW  (0) 2023.09.19
tek.com fft 관련 문서  (0) 2023.07.19
sfft  (0) 2023.07.12
fft window type과 진폭 보정계수  (0) 2023.07.04
Posted by 구차니

라고 하는게 맞는진 모르겠지만

500개의 데이터를 1초에 샘플링 할 경우

500개의 데이터를 넣냐

100개의 데이터를 넣냐에 따라 나오는결과가 달라지는데 이걸 어떻게 해석하냐에 대한 내용

 

input data

for ( i = 0; i < n; i++ )
{
in[i] = ( double ) sin ( 2.0f * PI * (double)(i * 10) / n);
}

500 에 10 주기 니까 500SPS일 경우 10Hz에 peak가 떠야 한다.

 

500개를 다 넣으면 10Hz 에서 peak가 뜬다.

같은 애를 x축 크기만 조정해서 출력하면 아래처럼 보인다. (오른쪽은 왼쪽의 그래프를 X축에 대해서 5배 확대한 것)

 

100개만 넣어서 돌리면, 값은 50개만 나오고(100/2+1) peak는 2에서 나온다.

같은 애를 x축 크기만 조정해서 출력하면 아래처럼 보인다. (왼쪽은 오른쪽의 그래프를 X축에 대해서 1/5배로 축소한 것)

 

 

 

상관관계로 보면

샘플링 속도는 동일하고

데이터 갯수가 1/N 만큼 줄어들면

원래 주파수로 환원하기 위해서는 *N을 해야 한다.

 

위의 경우 1/5 였으니까

주파수는 *5를 해야 정상적으로 나오고

다르게 해석하면 5Hz 의 RBW로 분석 주파수 해상도가 낮아졌다 라고 표현하면 될 듯.

'프로그램 사용 > fft, fftw' 카테고리의 다른 글

pffft fft / ifft 테스트  (0) 2024.08.01
fft 결과에 N(입력 샘플 갯수)로 나누는 이유  (0) 2023.09.21
tek.com fft 관련 문서  (0) 2023.07.19
sfft  (0) 2023.07.12
fft window type과 진폭 보정계수  (0) 2023.07.04
Posted by 구차니

윈도우와는 다르게 리눅스에서는

HDMI + touch를 연결하면 자꾸 0번 디스플레이와 새로 연결된 터치가 연결된다.

 

윈도우에서 지금까진 안맞는적은 없었는데, 연결방법 글이 있는걸 보면 아주 없진 않나보다.

아무튼 윈도우는 어떤 시나리오로 되길래 외부 모니터와 touch를 잘 매칭해주는진 모르겠지만

[링크 : https://comterman.tistory.com/2738]

 

wayland 나 x.org 에서는 영~ 매칭이 잘 안된다.

화면 찢어짐 때문에 wayland로 해놨는데 그 여파로 따라해봐도 스크린에 터치가 옮겨가진 않는다.

[링크 : https://askubuntu.com/questions/71768/touchscreen-and-additional-external-monitor]

[링크 : https://unix.stackexchange.com/questions/473721/calibrating-a-touch-screen-on-dual-monitors-one-touch-one-not]

 

libinput-device.c를 보면 아래 함수 두개에 associated 용어를 표현하며

입력 장치를 evdev의 이벤트를 통해 연결하는데, 회사에서 시험해볼때는

touch 장치 쪽에서 연결할 스크린 명칭을 넣어주지 않아서인지 제대로 연결되는걸 못 본 듯.

void
evdev_device_set_calibration(struct evdev_device *device)
{
struct udev *udev;
struct udev_device *udev_device = NULL;
const char *sysname = libinput_device_get_sysname(device->device);
const char *calibration_values;
uint32_t width, height;
struct weston_touch_device_matrix calibration;

if (!libinput_device_config_calibration_has_matrix(device->device))
return;

/* If LIBINPUT_CALIBRATION_MATRIX was set to non-identity, we will not
* override it with WL_CALIBRATION. It also means we don't need an
* output to load a calibration. */
if (libinput_device_config_calibration_get_default_matrix(
device->device,
calibration.m) != 0)
return;

/* touch_set_calibration() has updated the values, do not load old
* values from WL_CALIBRATION.
*/
if (device->override_wl_calibration)
return;

if (!device->output) {
weston_log("input device %s has no enabled output associated "
"(%s named), skipping calibration for now.\n",
sysname, device->output_name ?: "none");
return;
}

void
evdev_device_set_output(struct evdev_device *device,
struct weston_output *output)
{
if (device->output == output)
return;

if (device->output_destroy_listener.notify) {
wl_list_remove(&device->output_destroy_listener.link);
device->output_destroy_listener.notify = NULL;
}

if (!output) {
weston_log("output for input device %s removed\n",
libinput_device_get_sysname(device->device));

device->output = NULL;
return;
}

weston_log("associating input device %s with output %s "
"(%s by udev)\n",
libinput_device_get_sysname(device->device),
output->name,
device->output_name ?: "none");

device->output = output;
device->output_destroy_listener.notify = notify_output_destroy;
wl_signal_add(&output->destroy_signal,
&device->output_destroy_listener);
evdev_device_set_calibration(device);
}

'프로그램 사용 > wayland' 카테고리의 다른 글

weston evdev libinput  (0) 2024.03.11
weston 커서 숨기기  (0) 2024.02.26
wayland atomic commit 패치?  (0) 2022.08.22
weston screen shooter 뜯어보기  (0) 2022.08.17
wayland glreadpixels 실패  (0) 2022.08.16
Posted by 구차니

전체는 아니고 weston 쪽을 기준으로 빌드하는데

소요시간이 1시간

real 62m37.028s
user 0m6.099s
sys 0m0.797s

 

나중에 노트북에서 다시 빌드해 봐야하나?

어째 i7-10510U+ nvme 보다

i5-3570 + sata ssd 가 더 빠른것 같은건 왜지..

 

데스크탑과 노트북이라 차이가 있긴 해도 

벤치상으로는 노트북쪽이 신형이라 빠를텐데..?

'프로그램 사용 > yocto project' 카테고리의 다른 글

bitbake --help  (0) 2023.08.29
Do not use Bitbake as root.  (0) 2023.08.28
imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
Posted by 구차니