'프로그램 사용 > freecad' 카테고리의 다른 글
gemini + freecad (0) | 2025.09.01 |
---|---|
claude mcp + freecad (0) | 2025.08.31 |
freecad + MCP (0) | 2025.08.29 |
freecad on ubuntu 24.04 (0) | 2025.05.18 |
freecad 예제 (0) | 2024.11.09 |
gemini + freecad (0) | 2025.09.01 |
---|---|
claude mcp + freecad (0) | 2025.08.31 |
freecad + MCP (0) | 2025.08.29 |
freecad on ubuntu 24.04 (0) | 2025.05.18 |
freecad 예제 (0) | 2024.11.09 |
claude mcp + freecad (0) | 2025.08.31 |
---|---|
freeCAD + openFOAM (0) | 2025.08.29 |
freecad on ubuntu 24.04 (0) | 2025.05.18 |
freecad 예제 (0) | 2024.11.09 |
freecad touchpad (0) | 2024.09.25 |
element는 gst-inspector로 확인하는 개별 기능(?)
pads는 대개 source, sink로 표현되는 입출력
bins는 모르겠고.. pipeline은 element(요소)들을 pads를 통해 데이터를 흐르도록 하는 연결의 모임 으로 보면 될 듯
element | An element is the most important class of objects in GStreamer |
pads | Pads are an element's input and output, where you can connect other elements |
bins | A bin is a container for a collection of elements. |
pipeline | A pipeline is a top-level bin. |
엘리먼트는 크게 세가지로 나누어 지는데
source만 있는 source element(v4l2src 등)
source와 sink가 있는 filter element, demuxer
sink만 있는 sink element(waylandsink, autoviedeosink 등) 이 있다.
또한 name 을 이용해서 named element로 사용할 수 있다.
source element | Source elements generate data for use by a pipeline, for example reading from disk or from a sound card. | ![]() |
Filters, convertors, demuxers, muxers and codecs | Filters and filter-like elements have both input and outputs pads. | ![]() ![]() |
Sink elements | Sink elements are end points in a media pipeline. | ![]() |
element에는 properties가 존재하는데
일부는 설정용도로 쓸 수 있고, 일부는 상태정보를 폴링(polling)으로 읽어갈 수 있다.
$ gst-inspect-1.0 autovideosink Factory Details: Rank none (0) Long-name Auto video sink Klass Sink/Video Description Wrapper video sink for automatically detected video sink Author Jan Schmidt <thaytan@noraisin.net> Plugin Details: Name autodetect Description Plugin contains auto-detection plugins for video/audio in- and outputs Filename /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstautodetect.so Version 1.20.3 License LGPL Source module gst-plugins-good Source release date 2022-06-15 Binary package GStreamer Good Plugins (Ubuntu) Origin URL https://launchpad.net/distros/ubuntu/+source/gst-plugins-good1.0 GObject +----GInitiallyUnowned +----GstObject +----GstElement +----GstBin +----GstAutoDetect +----GstAutoVideoSink Implemented Interfaces: GstChildProxy Pad Templates: SINK template: 'sink' Availability: Always Capabilities: ANY Element has no clocking capabilities. Element has no URI handling capabilities. Pads: SINK: 'sink' Element Properties: async-handling : The bin will handle Asynchronous state changes flags: readable, writable Boolean. Default: false filter-caps : Filter sink candidates using these caps. flags: readable, writable, 0x2000 video/x-raw message-forward : Forwards all children messages flags: readable, writable Boolean. Default: false name : The name of the object flags: readable, writable, 0x2000 String. Default: "autovideosink0" parent : The parent of the object flags: readable, writable, 0x2000 Object of type "GstObject" sync : Sync on the clock flags: readable, writable Boolean. Default: true ts-offset : Timestamp offset in nanoseconds flags: readable, writable Integer64. Range: -9223372036854775808 - 9223372036854775807 Default: 0 |
Properties and values Properties are used to describe extra information for capabilities. A property consists of a key (a string) and a value. |
주기적으로 읽는게 싫다면 signal을 제공하는 엘리먼트를 통해 이벤트 발생시 값을 수신할 수 있다.
$ gst-inspect-1.0 fpsdisplaysink Factory Details: Rank none (0) Long-name Measure and show framerate on videosink Klass Sink/Video Description Shows the current frame-rate and drop-rate of the videosink as overlay or text on stdout Author Zeeshan Ali <zeeshan.ali@nokia.com>, Stefan Kost <stefan.kost@nokia.com> Plugin Details: Name debugutilsbad Description Collection of elements that may or may not be useful for debugging Filename /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstdebugutilsbad.so Version 1.20.3 License LGPL Source module gst-plugins-bad Source release date 2022-06-15 Binary package GStreamer Bad Plugins (Ubuntu) Origin URL https://launchpad.net/distros/ubuntu/+source/gst-plugins-bad1.0 GObject +----GInitiallyUnowned +----GstObject +----GstElement +----GstBin +----GstFPSDisplaySink Implemented Interfaces: GstChildProxy Pad Templates: SINK template: 'sink' Availability: Always Capabilities: ANY Element has no clocking capabilities. Element has no URI handling capabilities. Pads: SINK: 'sink' Element Properties: async-handling : The bin will handle Asynchronous state changes flags: readable, writable Boolean. Default: false fps-update-interval : Time between consecutive frames per second measures and update (in ms). Should be set on NULL state flags: readable, writable Integer. Range: 1 - 2147483647 Default: 500 frames-dropped : Number of frames dropped by the sink flags: readable Unsigned Integer. Range: 0 - 4294967295 Default: 0 frames-rendered : Number of frames rendered flags: readable Unsigned Integer. Range: 0 - 4294967295 Default: 0 last-message : The message describing current status flags: readable String. Default: null max-fps : Maximum fps rate measured. Reset when going from NULL to READY.-1 means no measurement has yet been done flags: readable Double. Range: -1 - 1.797693e+308 Default: -1 message-forward : Forwards all children messages flags: readable, writable Boolean. Default: false min-fps : Minimum fps rate measured. Reset when going from NULL to READY.-1 means no measurement has yet been done flags: readable Double. Range: -1 - 1.797693e+308 Default: -1 name : The name of the object flags: readable, writable, 0x2000 String. Default: "fpsdisplaysink0" parent : The parent of the object flags: readable, writable, 0x2000 Object of type "GstObject" signal-fps-measurements: If the fps-measurements signal should be emitted. flags: readable, writable Boolean. Default: false silent : Don't produce last_message events flags: readable, writable Boolean. Default: false sync : Sync on the clock (if the internally used sink doesn't have this property it will be ignored flags: readable, writable Boolean. Default: true text-overlay : Whether to use text-overlay flags: readable, writable Boolean. Default: true video-sink : Video sink to use (Must only be called on NULL state) flags: readable, writable Object of type "GstElement" Element Signals: "fps-measurements" : void user_function (GstElement* object, gdouble arg0, gdouble arg1, gdouble arg2, gpointer user_data); |
Signals GObject signals can be used to notify applications of events specific to this object. Note, however, that the application needs to be aware of signals and their meaning, so if you're looking for a generic way for application-element interaction, signals are probably not what you're looking for. In many cases, however, signals can be very useful. See the GObject documentation for all internals about signals. |
[링크 : https://gstreamer.freedesktop.org/documentation/plugin-development/basics/signals.html?gi-language=c]
bin - pipeline의 하위라는데 알아서 해주는게 포인트라고 보면되나?
$ gst-inspect-1.0 | grep bin camerabin: camerabin: Camera Bin camerabin: viewfinderbin: Viewfinder Bin camerabin: wrappercamerabinsrc: Wrapper camera src element for camerabin2 closedcaption: cccombiner: Closed Caption Combiner cluttergst3: clutterautovideosink: Generic bin codecalpha: alphacombine: Alpha Combiner codecalpha: vp8alphadecodebin: VP8 Alpha Decoder codecalpha: vp9alphadecodebin: VP9 Alpha Decoder debugutilsbad: testsrcbin: Generic bin dvb: dvbbasebin: DVB bin encoding: encodebin: Encoder Bin encoding: encodebin2: Encoder Bin libav: avdec_binkaudio_dct: libav Bink Audio (DCT) decoder libav: avdec_binkaudio_rdft: libav Bink Audio (RDFT) decoder libav: avdec_binkvideo: libav Bink video decoder libav: avdec_bintext: libav Binary text decoder libav: avdec_xbin: libav eXtended BINary text decoder opengl: glfilterbin: GL Filter Bin opengl: glmixerbin: OpenGL video_mixer empty bin opengl: glsinkbin: GL Sink Bin opengl: glsrcbin: GL Src Bin opengl: glstereomix: OpenGL stereo video combiner opengl: glvideomixer: OpenGL video_mixer bin playback: decodebin: Decoder Bin playback: decodebin3: Decoder Bin 3 playback: parsebin: Parse Bin playback: playbin: Player Bin 2 playback: playbin3: Player Bin 3 playback: uridecodebin: URI Decoder playback: uridecodebin3: URI Decoder playback: urisourcebin: URI reader resindvd: rsndvdbin: rsndvdbin rist: roundrobin: Round Robin rtpmanager: rtpbin: RTP Bin staticelements: bin: Generic bin switchbin: switchbin: switchbin transcode: transcodebin: Transcode Bin transcode: uritranscodebin: URITranscode Bin vaapi: vaapidecodebin: VA-API Decode Bin webrtc: webrtcbin: WebRTC Bin |
Play a media file using playbin (as in Basic tutorial 1: Hello world!): gst-launch-1.0 playbin uri=https://gstreamer.freedesktop.org/data/media/sintel_trailer-480p.webm A fully operation playback pipeline, with audio and video (more or less the same pipeline that playbin will create internally): gst-launch-1.0 souphttpsrc location=https://gstreamer.freedesktop.org/data/media/sintel_trailer-480p.webm ! matroskademux name=d ! queue ! vp8dec ! videoconvert ! autovideosink d. ! queue ! vorbisdec ! audioconvert ! audioresample ! autoaudiosink |
[링크 : https://gstreamer.freedesktop.org/documentation/tutorials/basic/hello-world.html?gi-language=c]
[링크 : https://gstreamer.freedesktop.org/documentation/tutorials/basic/gstreamer-tools.html?gi-language=c]
[링크 : http://ttps://medium.com/may-i-lab/gstreamer-gstreamer-기초-da5015f531fc]
GstPipelineStudio install 실패 (0) | 2025.09.20 |
---|---|
gstpipelinestudio (0) | 2025.09.11 |
gstreamer pipeline (0) | 2025.08.22 |
gstreamer tee 예제 (0) | 2025.08.21 |
gstreamer capsfilter (0) | 2025.08.21 |
nxp의 selfie_segmenter.py 에서 추출한 파이프라인
원래 나온거랑은 약간의 줄 추가가 있을 뿐 순서는 차이가 없음
특이(?)하게도 v4lsrc가 가장 처음에 시작하는게 아니라
imxpositor_g2d 라고 입력받은걸 양쪽으로 출력하는 비디오 믹서가 파이프라인의 시작에 존재한다.
imxcompositor_g2d latency=33333333 min-upstream-latency=33333333 name=comp sink_1::ypos=0 sink_0::ypos=0 sink_0::xpos=480 \
! cairooverlay name=cairo_text \
! fpsdisplaysink name=wayland_sink text-overlay=false video-sink=waylandsink \
v4l2src device=/dev/video3 \
! video/x-raw,width=640,height=480,framerate=30/1 \
! aspectratiocrop aspect-ratio=1/1 \
! imxvideoconvert_g2d rotation=horizontal-flip \
! video/x-raw,width=480,height=480 \
! tee name=t \
t. ! queue max-size-buffers=1 leaky=2 \
! imxvideoconvert_g2d \
! video/x-raw,width=256,height=256 \
! videoconvert \
! video/x-raw,format=RGB \
! tensor_converter \
! tensor_transform mode=arithmetic option=typecast:float32,div:255.0 \
! tensor_filter framework=tensorflow-lite model=/opt/gopoint-apps/downloads/selfie_segmenter_int8.tflite accelerator=true:npu custom=Delegate:External,ExtDelegateLib:libvx_delegate.so name=tensor_filter latency=1 \
! tensor_decoder mode=image_segment option1=snpe-depth option2=0 \
! imxvideoconvert_g2d \
! video/x-raw,width=480,height=480,format=RGBA \
! comp.sink_0 \
t. ! queue max-size-buffers=1 leaky=2 \
! comp.sink_1
|
자리를 조금 움직여서 보기 편하게(?) 만들면 아래와 같이
v4lsrc로 시작해서 fpsdisplaysink 로 끝내는 순차적인 구성으로 변경이 가능하다.
v4l2src device=/dev/video3 \
! video/x-raw,width=640,height=480,framerate=30/1 \
! aspectratiocrop aspect-ratio=1/1 \
! imxvideoconvert_g2d rotation=horizontal-flip \
! video/x-raw,width=480,height=480 \
! tee name=t \
t. ! queue max-size-buffers=1 leaky=2 \
! imxvideoconvert_g2d \
! video/x-raw,width=256,height=256 \
! videoconvert \
! video/x-raw,format=RGB \
! tensor_converter \
! tensor_transform mode=arithmetic option=typecast:float32,div:255.0 \
! tensor_filter framework=tensorflow-lite model=/opt/gopoint-apps/downloads/selfie_segmenter_int8.tflite accelerator=true:npu custom=Delegate:External,ExtDelegateLib:libvx_delegate.so name=tensor_filter latency=1 \
! tensor_decoder mode=image_segment option1=snpe-depth option2=0 \
! imxvideoconvert_g2d \
! video/x-raw,width=480,height=480,format=RGBA \
! imxcompositor_g2d latency=33333333 min-upstream-latency=33333333 name=comp sink_1::ypos=0 sink_0::ypos=0 sink_0::xpos=480 \
! cairooverlay name=cairo_text \
! fpsdisplaysink name=wayland_sink text-overlay=false video-sink=waylandsink \
t. ! queue max-size-buffers=1 leaky=2 \
! comp.sink_1
|
tee 로 나눈걸 다시 명시적으로 하는걸 생략하면 아래처럼도 변형가능하다.
v4l2src device=/dev/video3 \
! video/x-raw,width=640,height=480,framerate=30/1 \
! aspectratiocrop aspect-ratio=1/1 \
! imxvideoconvert_g2d rotation=horizontal-flip \
! video/x-raw,width=480,height=480 \
! tee name=t \
! queue max-size-buffers=1 leaky=2 \
! imxvideoconvert_g2d \
! video/x-raw,width=256,height=256 \
! videoconvert \
! video/x-raw,format=RGB \
! tensor_converter \
! tensor_transform mode=arithmetic option=typecast:float32,div:255.0 \
! tensor_filter framework=tensorflow-lite model=/opt/gopoint-apps/downloads/selfie_segmenter_int8.tflite accelerator=true:npu custom=Delegate:External,ExtDelegateLib:libvx_delegate.so name=tensor_filter latency=1 \
! tensor_decoder mode=image_segment option1=snpe-depth option2=0 \
! imxvideoconvert_g2d \
! video/x-raw,width=480,height=480,format=RGBA \
! imxcompositor_g2d latency=33333333 min-upstream-latency=33333333 name=comp sink_1::ypos=0 sink_0::ypos=0 sink_0::xpos=480 \
! cairooverlay name=cairo_text \
! fpsdisplaysink name=wayland_sink text-overlay=false video-sink=waylandsink \
t. \
! queue max-size-buffers=1 leaky=2 \
! comp.sink_1
|
gstpipelinestudio (0) | 2025.09.11 |
---|---|
gstreamer 기초 (0) | 2025.08.27 |
gstreamer tee 예제 (0) | 2025.08.21 |
gstreamer capsfilter (0) | 2025.08.21 |
gstreamer parse_launch (0) | 2024.01.11 |
코드분석하다 보니 신경망 모델중에
facenet_int_quantized.tflite 이런파일이 보여서 imagenet 처럼 머하는건가 찾아보는데
128 차원 임베딩 벡터란걸 학습시켜 비교를 한다는데
일단 코드 상으로는
결과물이 128 개의 배열로 나온다.
그리고 그걸 코사인 유사로 계산을 통해서 두개의 백터가 유사하다면 동일 인물로 추정하는 것 같은데..
[링크 : https://cake.tistory.com/44]
[링크 : https://hwangtoemat.github.io/paper-review/2020-04-02-FaceNet-%EB%82%B4%EC%9A%A9/]
[링크 : https://wikidocs.net/151188]
[링크 : https://hyunah-home.tistory.com/entry/Facenet-얼굴-인식-모델-Fine-tuning-하기]
내장 그래픽으로 ROCm? (0) | 2025.09.05 |
---|---|
ai 모델들 조사 (0) | 2025.09.04 |
NMS, soft-NMS (0) | 2024.01.15 |
VGG-16 / VGG-19 (0) | 2024.01.11 |
MobileNetV2 SSD FPN-Lite (0) | 2024.01.11 |
gemini를 찬양하라(?)
# Example with avenc_aac gst-launch-1.0 -e \ filesrc location=video1.mp4 ! decodebin name=demux1 \ filesrc location=video2.mp4 ! decodebin name=demux2 \ demux1. ! queue ! videoconvert ! x264enc ! tee name=vtee1 \ demux1. ! queue ! audioconvert ! audioresample ! avenc_aac ! tee name=atee1 \ demux2. ! queue ! videoconvert ! x264enc ! tee name=vtee2 \ demux2. ! queue ! audioconvert ! audioresample ! avenc_aac ! tee name=atee2 \ vtee1. ! queue ! mp4mux name=mux1 ! filesink location=output1.mp4 \ vtee2. ! queue ! mp4mux name=mux2 ! filesink location=output2.mp4 \ atee2. ! queue ! mux1.audio_0 \ atee1. ! queue ! mux2.audio_0 |
name. 으로 해서 이전것에서 새끼(?)치면 되나보다.
굳이 그리자면 이런식으로 나오는 듯.
2021.02.08 - [프로그램 사용/gstreamer] - gstreamer tee
gstreamer 기초 (0) | 2025.08.27 |
---|---|
gstreamer pipeline (0) | 2025.08.22 |
gstreamer capsfilter (0) | 2025.08.21 |
gstreamer parse_launch (0) | 2024.01.11 |
nnstreamer (0) | 2023.12.20 |
gstreamer 파이프라인 예제를 보다가 이상한걸 발견
video/x-raw가 엘리먼트 이름은 아닐텐데..하고 gpt에 물어보니 capsfilter 라고 해서 찾아보니
gst-launch-1.0 -v v4l2src ! videorate ! video/x-raw,framerate=25/2 ! theoraenc ! oggmux ! filesink location=recording.ogg |
[링크 : https://gstreamer.freedesktop.org/documentation/videorate/?gi-language=c]
"capsfilter caps=" 생략하고 쓰면 알아서 capsfilter로 인식하는 건가?
Example launch line gst-launch-1.0 videotestsrc ! capsfilter caps=video/x-raw,format=GRAY8 ! videoconvert ! autovideosink Limits acceptable video from videotestsrc to be grayscale. Equivalent to gst-launch-1.0 videotestsrc ! video/x-raw,format=GRAY8 ! videoconvert ! autovideosink |
[링크 : https://gstreamer.freedesktop.org/documentation/coreelements/capsfilter.html?gi-language=c]
gstreamer pipeline (0) | 2025.08.22 |
---|---|
gstreamer tee 예제 (0) | 2025.08.21 |
gstreamer parse_launch (0) | 2024.01.11 |
nnstreamer (0) | 2023.12.20 |
gst-device-monitor-1.0 (0) | 2023.12.06 |
아..하?
Go to blender, remove vertical faces, select circle dots and press F. |
[링크 : https://www.reddit.com/r/FreeCAD/comments/16rbcnx/how_to_fill_the_hole/?tl=ko]
모델을 받고
[링크 : https://www.thingiverse.com/thing:5418222]
싱기버스에서 받아서 stl로 불러올때 0.001 sclae로 해주니 얼추 사이즈가 맞게 나오는것 같다.
근데 scenedml length를 meter에서 milimeters로 바꾸어도 왜 불러올때 scene unit을 체크해도 사이즈가 변함없을까..
열심히 edit mode 에서 면을 고르고
면을 삭제한 뒤
주변을 선택하고
'F'를 눌러 fill 해주면 감쪽같이!
오.. 폴리곤을 줄이면서 단순화 하려면 방법이 없나?
gemini + blender (0) | 2025.09.01 |
---|---|
blender 휠 에뮬레이트 하기 (0) | 2025.05.18 |
blender + kinect (0) | 2025.04.16 |
blender 강좌 (0) | 2025.01.01 |
blender render - cycle, eevee (0) | 2024.08.30 |
독 메뉴 중에 페인트 동적 요소를 열어야 하는데
그 좌측 하단에 + 써있는걸 누르면 새로운 동적 요소가 생겨나고 수정이 가능해진다.
기본으로 제공되는 프리셋은 수정이 불가능한 듯.
아무튼 새로 추가해서 불투명도에서 "압력", "방향"을 체크변경할 수 있고
클릭 두 번하면 선이 생겨나고 그 이후에 베지어 곡선으로 어떻게 바꿀수 있는 듯.
아무튼 이런식으로 내가 원하는 기능에 펜의 특성을 지정해주면 된다.
GIMP on windows with wacom (0) | 2025.08.18 |
---|---|
gimp fisheye correction (0) | 2015.10.20 |
gimp를 이용하여 RGB 를 BGR로 변경하기 (0) | 2014.12.03 |
gimp을 이용하여 색온도 바꾸기 (0) | 2012.10.11 |
gimp 로고가 바꼈어요 (2.6.12 -> 2.8.0) (0) | 2012.07.14 |
장치 및 버전
---
일단 이전 버전은 잘은 기억안나는데 intuos 3 쪽 테스트 한다고 구버전을 깔았었고
2006년 드라이버로 잡혔었는데 (대충 기억으로 6.3.5 였나 그랬음)
pth-651용 신버전으로 설치하니, 6.4.10-3 으로 업그레이드 되고
wacom tablet의 드라이버 날자도 2006년에서 2025년으로 갱신
windows ink 사용하건 안하건
gimp wintab / windows ink 중에 어떤걸 하던 잘 된다.
입력 장치에서 WACOM Tablet Eraser와 WACOM Tablet Pressure Stylus의 모드가
처음에는 "사용 안 함" 인데 "화면" 혹은 "창"으로 바꾸어주면 필압과 지우개가 인식된다.
하다보니 갑자기(?) 이상한 녀석들이 잔뜩 추가되었다? 누군지 모르겠으니 전부 화면으로 선택해주면 끝
필압쪽은 아래와 같이 설정하면 된다.
기본값이 dynamics off 이고, 마우스 대신 펜으로 반드시 동적요소를 바꾸어 주어야 펜에 적용된다.
![]() |
![]() |
pressure size를 선택하면 매핑 행렬에 크기 - 압력 으로 체크되고, 세게 누르면 두껍게 입력된다.
색을 하면 진하게 될텐데 그게 더 나으려나?
![]() |
![]() |
그 외에 tilt angle을 택하면 각도 - 기울기로 되고
![]() |
![]() |
펜의 기울기 각도에 따라 조합이 되어, 아래처럼 어느정도는 pen barrel 혹은 rotate를 흉내낼수 있게 된다.
예전에는 글로벌 설정으로 된거 같은데 지우개, 브러시 별로 각각 설정이 되어서 좋다고 해야하나..
불편하다고 해야하나..
---
크게 도움은 되지 않았지만 그래도 나름(?) 첫 길잡이가 되어준 글들
[링크 : https://greenon.tistory.com/316]
[링크 : https://www.gimp-forum.net/Thread-Wacom-Tablet-Not-showing-in-Input-Devices]
GIMP paint dynamics editor (0) | 2025.08.19 |
---|---|
gimp fisheye correction (0) | 2015.10.20 |
gimp를 이용하여 RGB 를 BGR로 변경하기 (0) | 2014.12.03 |
gimp을 이용하여 색온도 바꾸기 (0) | 2012.10.11 |
gimp 로고가 바꼈어요 (2.6.12 -> 2.8.0) (0) | 2012.07.14 |