embeded/raspberry pi2024. 2. 26. 17:38

raspi-still이 deprecated 였다면.. raspivid도 그렇게 되었을 텐데

Re: pi Camera not supported

Tue Dec 05, 2023 1:40 pm
raspi-still is a deprecated application and does not work with libcamera. Use the libcamera applications.

What OS, what Pi are you using? Have you re-seated all the camera connectors in case one has come loose?

[링크 : https://forums.raspberrypi.com/viewtopic.php?t=360897]

 

그나저나 libcamera는 또 머냐..

csi는 libcamera로 지원되지 않는건가?

pi@raspberrypi:~ $ vcgencmd get_camera
supported=1 detected=1, libcamera interfaces=0

pi@raspberrypi:~ $ libcamera-still --list-cameras
No cameras available!

 

 

그래서 raspi-config에서 아래 처럼 사라질수 있다 라고 기재한건가?

 

 

'embeded > raspberry pi' 카테고리의 다른 글

rpi pico / micropython  (0) 2024.07.15
rpi 콘솔 옮기기  (0) 2024.02.26
3d 프린트 한 라즈베리 케이스  (0) 2024.02.21
mariadb 라즈베리 파이 설정값  (0) 2024.01.02
MCP2515 on rpi  (0) 2023.10.31
Posted by 구차니
프로그램 사용/wayland2024. 2. 26. 16:48

weston.ini 에 추가해서 아예 커서를 그리지 않게 하는 방법

static void
pointer_set_cursor(struct wl_client *client, struct wl_resource *resource,
   uint32_t serial, struct wl_resource *surface_resource,
   int32_t x, int32_t y)
{
struct weston_pointer *pointer = wl_resource_get_user_data(resource);
struct weston_surface *surface = NULL;

if (!pointer)
return;

if (surface_resource)
surface = wl_resource_get_user_data(surface_resource);

if (pointer->focus == NULL)
return;
/* pointer->focus->surface->resource can be NULL. Surfaces like the
black_surface used in shell.c for fullscreen don't have
a resource, but can still have focus */
if (pointer->focus->surface->resource == NULL)
return;
if (wl_resource_get_client(pointer->focus->surface->resource) != client)
return;
if (pointer->focus_serial - serial > UINT32_MAX / 2)
return;

if (!surface) {
if (pointer->sprite)
pointer_unmap_sprite(pointer);
return;
}

if (pointer->sprite && pointer->sprite->surface == surface &&
    pointer->hotspot_x == x && pointer->hotspot_y == y)
return;

if (!pointer->sprite || pointer->sprite->surface != surface) {
if (pointer->seat->compositor->hide_cursor)
return;

if (weston_surface_set_role(surface, "wl_pointer-cursor",
    resource,
    WL_POINTER_ERROR_ROLE) < 0)
return;

if (pointer->sprite)
pointer_unmap_sprite(pointer);

wl_signal_add(&surface->destroy_signal,
      &pointer->sprite_destroy_listener);

surface->committed = pointer_cursor_surface_committed;
surface->committed_private = pointer;
weston_surface_set_label_func(surface,
    pointer_cursor_surface_get_label);
pointer->sprite = weston_view_create(surface);
}

pointer->hotspot_x = x;
pointer->hotspot_y = y;

if (surface->buffer_ref.buffer) {
pointer_cursor_surface_committed(surface, 0, 0);
weston_view_schedule_repaint(pointer->sprite);
}
}

[링크 : https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/345/diffs]

[링크 : https://gitlab.freedesktop.org/wayland/weston/-/blob/f964b59c8af8505422cac79de2466e0a31702a0d/libweston/input.c]

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

weston evdev libinput  (0) 2024.03.11
wayland hdmi - touch 연결  (0) 2023.09.08
wayland atomic commit 패치?  (0) 2022.08.22
weston screen shooter 뜯어보기  (0) 2022.08.17
wayland glreadpixels 실패  (0) 2022.08.16
Posted by 구차니

머했나 싶을 정도로 훅 하고 지나갔네

그래도 토/일 자전거 30분씩이라도 두번 탔으니

건강을 위한 한걸음 시작!

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

생일 파티 part 2 + 웹캠지름  (0) 2024.03.02
생일 파티 part 1  (0) 2024.03.01
으윽 비가 온다.  (0) 2024.02.18
피곤모드  (0) 2024.02.12
애견놀이터 민원은 실패  (0) 2024.02.03
Posted by 구차니
Programming/openCV2024. 2. 24. 23:00

얼마전 테스트 해본 계산 알고리즘은 BM(block match)인데 먼가 먼 곳은 전혀 안 잡아줘서

어떻게 설정을 해야 하나 패러미터를 찾아보고 있었는데 다른 알고리즘이 있다는걸 발견함.

 

 

numDisparities는 검색할 범위. 16의 배수로 하라는데, 해보면 화면의 왼쪽이 사라진다. 지정된 숫자만큼 가장 왼쪽은 버려지는 듯

blockSize. 동일한 블록으로 연산할 단위라고 해야하나. 해당 숫자가 NxN으로 되는건지 숫자가 커지면 블럭이 거칠어 지는 느낌.

numDisparities
the disparity search range. For each pixel algorithm will find the best disparity from 0 (default minimum disparity) to numDisparities. The search range can then be shifted by changing the minimum disparity.

blockSize
the linear size of the blocks compared by the algorithm. The size should be odd (as the block is centered at the current pixel). Larger block size implies smoother, though less accurate disparity map. Smaller block size gives more detailed disparity map, but there is higher chance for algorithm to find a wrong correspondence.

[링크 : https://docs.opencv.org/4.x/d9/dba/classcv_1_1StereoBM.html]

[링크 : https://makepluscode.tistory.com/108]

 

BM 방법은 실내에서나 쓰는거지 실외에서는 잘 안 맞다고 그러니 SGM 기반으로 된 걸 써라~ 인가.

Wrong method. BM is only meant for simple indoor use with low dynamic measuring range. With indoor image, you just need a adjsut mindisp and number of disp and window size.

For outdoor, it is more complex. Maybe u just start. BM and other global based method has the poor result. Either disfigured for overfitting, or streaking effect due to local similarity error.

Current state of the art for traditional CV is the SGM based method proposed by HH. And for the deep learning-based method, there is no best case, vary from case to case/dataset to dataset. The work from lecun Žbontar "Stereo Matching by Training a Convolutional Neural Network " is sth that I used for comparison often.

[링크 : https://stackoverflow.com/questions/62461799/]

 

별별 희한한 알고리즘이 나온다. SGBM? BM 이 붙긴한데..

            alg = strcmp(_alg, "bm") == 0 ? STEREO_BM :
                  strcmp(_alg, "sgbm") == 0 ? STEREO_SGBM :
                  strcmp(_alg, "hh") == 0 ? STEREO_HH :
                  strcmp(_alg, "var") == 0 ? STEREO_VAR : -1;

[링크 : https://copyprogramming.com/howto/opencv-stereo-matching]

 

[링크 : https://docs.opencv.org/4.9.0/d9/dba/classcv_1_1StereoBM.html]

[링크 : https://docs.opencv.org/4.9.0/d2/d85/classcv_1_1StereoSGBM.html]

 

 

SGBM

semi-global block matching algorithm

[링크 : https://amroamroamro.github.io/mexopencv/matlab/cv.StereoSGBM.html]

 

+

2024.02.26

요 근래 버전이긴 한데 오래된 버전에서도 나오긴 하고 python엣도 SGBM이 있으니, 테스트는 해봐야 할 듯.

>>> import cv2>>> cv2.stereo
cv2.stereo                         cv2.stereoRectifyUncalibrated(
cv2.stereoCalibrate(               cv2.stereo_MatchQuasiDense(
cv2.stereoCalibrateExtended(       cv2.stereo_PropagationParameters(
cv2.stereoRectify(                 cv2.stereo_QuasiDenseStereo(

>>> cv2.St
cv2.StereoBM(
cv2.StereoBM_PREFILTER_NORMALIZED_RESPONSE
cv2.StereoBM_PREFILTER_XSOBEL
cv2.StereoBM_create(
cv2.StereoMatcher(
cv2.StereoMatcher_DISP_SCALE
cv2.StereoMatcher_DISP_SHIFT
cv2.StereoSGBM(
cv2.StereoSGBM_MODE_HH
cv2.StereoSGBM_MODE_HH4
cv2.StereoSGBM_MODE_SGBM
cv2.StereoSGBM_MODE_SGBM_3WAY
cv2.StereoSGBM_create(
cv2.Stitcher(
cv2.Stitcher_ERR_CAMERA_PARAMS_ADJUST_FAIL
cv2.Stitcher_ERR_HOMOGRAPHY_EST_FAIL
cv2.Stitcher_ERR_NEED_MORE_IMGS
cv2.Stitcher_OK
cv2.Stitcher_PANORAMA
cv2.Stitcher_SCANS
cv2.Stitcher_create(

 

The definitions of all the arguments are given at the bottom of the documentation page here
In block matching or cv2.StereoBM_create() the disparity is computed by comparing the sum of absolute differences (SAD) of each 'block' of pixels. In semi-global block matching or cv2.StereoSGBM_create() forces similar disparity on neighbouring blocks. This creates a more complete disparity map but is more computationally expensive.
Paper that discusses 'block matching'
Paper that discusses 'semi-global block matching'

[링크 : https://stackoverflow.com/questions/51758076/]

Posted by 구차니
개소리 왈왈/컴퓨터2024. 2. 24. 16:47

두개를 하는데 어라.. 색감이랑 피사체 크기다 다르다?

 

 

5천원 짜리에 너무 기대를 한걸까? 나란히 놓고 찍으니 화각이 다르다. 

그래도 렌즈쪽이니 기본 품질은 될 줄 알았는데 멘붕..

 

그래서 두개를 분해해보니 렌즈 색상도 다르고(코팅이 다른가)

앞에서 보면 렌즈 크기도 달라보이는데 뒤에서 보면 분해할 방법도 없으니 빠른 포기!

 

작은 사이즈의 MLCC 보다 약간 큰 센서면.. 이러니 싼건가

근데 저렴이 버전의 csi 모듈도 웬지 분해하면 요만하게 나올 느낌

 

 

 

'개소리 왈왈 > 컴퓨터' 카테고리의 다른 글

cpu, ram 적출  (0) 2024.03.19
다이소 웹캠.. M12 렌즈.. 계륵?!  (0) 2024.03.14
2 포트 vs 4 포트 그리고 컴퓨터  (0) 2024.01.27
G4400T 내장 그래픽이...  (0) 2024.01.10
lenovo m710q 재설치  (0) 2023.12.18
Posted by 구차니
Linux/Ubuntu2024. 2. 23. 19:16

해볼까?

pfsense도 귀찮고..

그냥 필요한건 간단하게 NAT와 포트포워딩, DHCP 정도인데..

 

NAT

iptable masqurade

[링크 : https://ko.linux-console.net/?p=15300]

 

iptable - port forward

[링크 : https://www.google.com/amp/s/tecadmin.net/setting-up-a-port-forwarding-using-iptables-in-linux/%3famp]

 

 

DHCP

dhcpd

[링크 : https://askubuntu.com/questions/913250/how-can-i-get-isc-dhcp-server-dhcpd-to-listen-on-one-interface-only]

 

방화벽

suricata

[링크 : https://www.hostinger.com/tutorials/how-to-install-suricata-on-ubuntu]

 

 

snort

[링크 : https://fni8383.tistory.com/m/35]

'Linux > Ubuntu' 카테고리의 다른 글

정체 불명의 우분투 키보드 입력 지연  (0) 2024.06.28
snmp 클라이언트 - snmpwalk, snmpget  (0) 2024.05.17
ubuntu pro?  (2) 2024.01.31
debian nvme tool  (0) 2023.08.28
edid-read  (0) 2023.08.17
Posted by 구차니

creality print 의 slice 설정

쉘에서 Z 솔기 정렬과 / 솔기 모서리 기본 설정이 있는데 아래의 항목이 선택가능하다.

Z 솔기 정렬 - 랜덤 / 날카로운 모서리 / 최단거리 / 사용자 지정

솔기 모서리 기본 설정 - 솔기 노출 또는 숨기기 / 솔기 숨기기 / 없음 / 솔기 노출 / 스마트 숨김

 

솔기 혹은 재봉선이라고 하는데, 한 단면의 시작위치가 동일해서 생기는 현상이다.

어떻게 보면 해당 시작지점만 좀 불룩하게 나온다고 해야하나

그래서 재봉선을 랜덤으로 하거나(그럼 칼빵에서 뾰루지로 변경..)

벽을 두껍게 하고 내부면에서 시작하게 하면 외부로 드러나지 않게 완화할수 있다.

 

흰색 라인이 Z솔기

어떨때는 귀랑 얼굴에 양쪽으로 생기더니

슬라이스 프로그램 자기 마음대로인가 -_-

 

다만 이녀석은 프린트 시간이 늘어나는 단점이..

[링크 : https://wikidocs.net/212919]

[링크 : https://m.blog.naver.com/ray0412/221965919391]

 

Posted by 구차니

matplotlib을 이용하여 lena를 3d로 그리는게 보이길래 해보려는데

아래와 같이 deprecated 경고만 발생해서 되는걸 못 찾다가

>>> ax = fig.gca(projection='3d')
<stdin>:1: MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4. Starting two minor releases later, gca() will take no keyword arguments. The gca() function should only be used to get the current axes, or if no axes exist, create new axes with default keyword arguments. To create a new axes with non-default arguments, use plt.axes() or plt.subplot().

>>> ax= Axes3D(fig)
<stdin>:1: MatplotlibDeprecationWarning: Axes3D(fig) adding itself to the figure is deprecated since 3.4. Pass the keyword argument auto_add_to_figure=False and use fig.add_axes(ax) to suppress this warning. The default value of auto_add_to_figure will change to False in mpl3.5 and True values will no longer work in 3.6.  This is consistent with other Axes classes.

 

chatGPT에게 물어보니 아래와 같이 줘서 시도하니 나오긴 나온다.

import cv2
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 이미지 읽기
image_path = 't.png'
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

# 이미지의 높이와 너비 얻기
height, width = img.shape

# 2D 배열을 생성하여 각 픽셀의 깊이 값을 저장
depth_map = np.zeros_like(img, dtype=np.float32)

# 각 픽셀의 깊이 계산 (여기서는 그레이스케일 값으로 대체)
depth_map = img.astype(np.float32)

# 3D 그래프 생성
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# X, Y 좌표 생성
x = np.arange(0, width, 1)
y = np.arange(0, height, 1)
x, y = np.meshgrid(x, y)

# 깊이 맵을 사용하여 Z 좌표 생성
z = depth_map

# 3D 그래프에 표시
ax.plot_surface(x, y, z, cmap='viridis')

# 그래프 표시
plt.show()

 

분위기를 보아하니 viridis 를 해서 저런 녹색톤이 나오는것 같은데 plasms가 웬지 flir에서 보던 느런 느낌이려나?

[링크 : https://matplotlib.org/stable/users/explain/colors/colormaps.html]

 

 

위에서 보면 아래와 같이 lena 이미지가 똭!

[링크 : https://stackoverflow.com/questions/31805560/how-to-create-surface-plot-from-greyscale-image-with-matplotlib]

[링크 : https://jehyunlee.github.io/2021/07/10/Python-DS-80-mpl3d2/]

 

 

'Programming > python(파이썬)' 카테고리의 다른 글

pip 패키지 관리  (0) 2024.02.27
pyhthon numpy 생략없이 출력  (0) 2024.02.26
python tcp 서버 예제  (0) 2024.01.22
파이썬 소켓 예제  (0) 2024.01.17
ipython notebook -> jupyter notebook  (0) 2024.01.11
Posted by 구차니
Programming/openCV2024. 2. 21. 23:52

이미지는 아래 github에서 받으면 될 듯.

[링크 : https://github.com/canberkgurel/DisparityMapfromStereoPair]

 

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
imgL = cv.imread('my_photo-1.jpg', cv.IMREAD_GRAYSCALE)
imgR = cv.imread('my_photo-2.jpg', cv.IMREAD_GRAYSCALE)
stereo = cv.StereoBM_create(numDisparities=16, blockSize=5)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()

[링크 : https://docs.opencv.org/3.4/dd/d53/tutorial_py_depthmap.html]

 

blockSize는 홀수여야 한다고 한다

[링크 : https://makepluscode.tistory.com/108]

 

웹캠을 조금 옆으로 보내 찍고 대충 먼가 인식 가능하게 숫자 적절하게 맞춰서 해보았는데

안경만 도드라지는 느낌..

왼쪽은 16에 5

오른쪽은 16과 7로 설정. 

+

2024.02.23

 

아래 이미지를 이용해서 3d 계산하고

[링크 : https://github.com/canberkgurel/DisparityMapfromStereoPair]

 

나온 depth map을 저장하고

 

depth 맵을 3d 이미지로 변환하면

멀 잘못 만들어 줬는지 z 축과 x 축이 뒤바뀡 모양

아무튼 두상과 램프 스탠드가 깊이로 인식된 것이 보인다.

 

Posted by 구차니
embeded/raspberry pi2024. 2. 21. 23:37

슬림해서 이쁜데

방열판 있으면 안되는 크기란 걸 간과했다...

그래서 라즈베리 2에만 장착하기로 결정!

 

흰색은 잘 녹는지 크게 눈에 거슬리지 않는데, 빨간색은 곳곳에 구멍이 빈다.

 

높이 방향으로는 의외로 깔끔하게 잘 뽑는다.

 

빨간색과 흰색으로 두개 뽑아서 바꿔주니 투 톤이라 좀 더 이뻐 보이는 효과가!

이제 남은건.. 저 망할(?) FFC와 카메라 케이스 ㅋㅋ

'embeded > raspberry pi' 카테고리의 다른 글

rpi 콘솔 옮기기  (0) 2024.02.26
rpi libcamera?  (0) 2024.02.26
mariadb 라즈베리 파이 설정값  (0) 2024.01.02
MCP2515 on rpi  (0) 2023.10.31
서보 pan/tilt 조립  (0) 2023.09.23
Posted by 구차니