이제와서 하다니 흑흑
소득공제 - 인적공제, 카드, 현금영수증 (총 급여액 깍기)
세액공제 - 보험, 의료, 교육 (산출 세액 깍기)
'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글
지하철 연...착? (0) | 2024.04.17 |
---|---|
ㄹ미ㅏㄴ어리ㅏㅁㄴ어리ㅏㄴㅁ어리ㅏ (0) | 2024.03.06 |
소득공제? (0) | 2024.02.13 |
으아아아아아 (0) | 2024.01.24 |
개 피곤 (0) | 2024.01.12 |
이제와서 하다니 흑흑
소득공제 - 인적공제, 카드, 현금영수증 (총 급여액 깍기)
세액공제 - 보험, 의료, 교육 (산출 세액 깍기)
지하철 연...착? (0) | 2024.04.17 |
---|---|
ㄹ미ㅏㄴ어리ㅏㅁㄴ어리ㅏㄴㅁ어리ㅏ (0) | 2024.03.06 |
소득공제? (0) | 2024.02.13 |
으아아아아아 (0) | 2024.01.24 |
개 피곤 (0) | 2024.01.12 |
Block SCSI generic (bsg) driver (0) | 2024.04.16 |
---|---|
lsusb -v 로 본 장치(HID MT, mouse) (0) | 2024.03.08 |
btrfs fsck (0) | 2024.02.13 |
리눅스 파일 시스템 캐싱 (0) | 2024.01.09 |
multitail / tail (2) | 2023.10.18 |
contrib 패키지를 설치해주면 해결!
오늘자 기준으로 한 63MB 정도 된다. 꽤나 큰 편 인 듯
$ python3 depth.py Traceback (most recent call last): File "/home/minimonk/src/DisparityMapfromStereoPair/depth.py", line 17, in <module> right_matcher = cv.ximgproc.createRightMatcher(left_matcher); AttributeError: module 'cv2' has no attribute 'ximgproc' $ pip install opencv-contrib-python |
[링크 : https://stackoverflow.com/questions/57427233/module-cv2-cv2-has-no-attribute-ximgproc]
docker를 이용하여 python 에서 opencv 돌리기 (0) | 2024.05.08 |
---|---|
python thread event (0) | 2024.03.05 |
cv2.stereoBM + WLS (0) | 2024.02.28 |
matplotlib animation (0) | 2024.02.28 |
pip 패키지 관리 (0) | 2024.02.27 |
matplotlib을 3d로 그려보는 것 까지 통합완료. 이제 SGBM만 해보면 될 듯
WLS 필터 미적용 | WLS 필터 적용 |
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
imgL = cv.imread('tsukuba_l.png', cv.IMREAD_GRAYSCALE)
imgR = cv.imread('tsukuba_r.png', cv.IMREAD_GRAYSCALE)
max_disparity=16
stereo = cv.StereoBM_create(max_disparity, blockSize=15)
disparity = stereo.compute(imgL,imgR)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# X, Y 좌표 생성
height, width = imgL.shape
x = np.arange(0, width, 1)
y = np.arange(0, height, 1)
x, y = np.meshgrid(x, y)
# 깊이 맵을 사용하여 Z 좌표 생성
z = disparity
# 3D 그래프에 표시
ax.plot_surface(x, y, z, cmap='viridis')
plt.show()
# WLS 필터 적용
right_matcher = cv.ximgproc.createRightMatcher(stereo);
left_disp = stereo.compute(imgL, imgR);
right_disp = right_matcher.compute(imgR, imgL);
# Now create DisparityWLSFilter
wls_filter = cv.ximgproc.createDisparityWLSFilter(stereo);
sigma = 1.5
lmbda = 8000.0
wls_filter.setLambda(lmbda);
wls_filter.setSigmaColor(sigma);
filtered_disp = wls_filter.filter(left_disp, imgL, disparity_map_right=right_disp);
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
z = filtered_disp
# 3D 그래프에 표시
ax.plot_surface(x, y, z, cmap='viridis')
plt.show()
|
python thread event (0) | 2024.03.05 |
---|---|
cv2.ximgproc 없을 경우 (0) | 2024.02.28 |
matplotlib animation (0) | 2024.02.28 |
pip 패키지 관리 (0) | 2024.02.27 |
pyhthon numpy 생략없이 출력 (0) | 2024.02.26 |
[링크 : https://matplotlib.org/stable/api/animation_api.html]
import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation fig, ax = plt.subplots() xdata, ydata = [], [] ln, = plt.plot([], [], 'ro') def init(): ax.set_xlim(0, 2*np.pi) ax.set_ylim(-1, 1) return ln, def update(frame): xdata.append(frame) ydata.append(np.sin(frame)) ln.set_data(xdata, ydata) return ln, ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128), init_func=init, blit=True) plt.show() |
[링크 : https://pythonprogramming.net/python-matplotlib-live-updating-graphs/]
[링크 : https://stackoverflow.com/questions/11874767/how-do-i-plot-in-real-time-in-a-while-loop]
+ 2024.03.14
import cv2 import matplotlib.pyplot as plt def grab_frame(cap): ret,frame = cap.read() return cv2.cvtColor(frame,cv2.COLOR_BGR2RGB) #Initiate the two cameras cap1 = cv2.VideoCapture(0) cap2 = cv2.VideoCapture(1) #create two subplots ax1 = plt.subplot(1,2,1) ax2 = plt.subplot(1,2,2) #create two image plots im1 = ax1.imshow(grab_frame(cap1)) im2 = ax2.imshow(grab_frame(cap2)) plt.ion() while True: im1.set_data(grab_frame(cap1)) im2.set_data(grab_frame(cap2)) plt.pause(0.2) plt.ioff() # due to infinite loop, this gets never called. plt.show() |
[링크 : https://stackoverflow.com/questions/44598124/update-frame-in-matplotlib-with-live-camera-preview]
matplotlib.pyplot.ion()[source] Enable interactive mode. See pyplot.isinteractive for more details. See also ioff Disable interactive mode. isinteractive Whether interactive mode is enabled. show Show all figures (and maybe block). pause Show all figures, and block for a time. |
[링크 : https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.ion.html]
cv2.ximgproc 없을 경우 (0) | 2024.02.28 |
---|---|
cv2.stereoBM + WLS (0) | 2024.02.28 |
pip 패키지 관리 (0) | 2024.02.27 |
pyhthon numpy 생략없이 출력 (0) | 2024.02.26 |
matplotlib grayscale image to 3d graph (0) | 2024.02.22 |
pip도 아래 명령들을 이용하면 현재 패키지 버전들을 저정하고, 필요한 버전들을 설치할 수 있다.
python 프로젝트들이 나중에 버전이 꼬여서 난리나는거 보면
필수적인데 왜 다들 안쓸까..
pip list pip freeze > requirements.txt |
[링크 : https://intelloper.tistory.com/53]
pip install -r requirements.txt |
cv2.stereoBM + WLS (0) | 2024.02.28 |
---|---|
matplotlib animation (0) | 2024.02.28 |
pyhthon numpy 생략없이 출력 (0) | 2024.02.26 |
matplotlib grayscale image to 3d graph (0) | 2024.02.22 |
python tcp 서버 예제 (0) | 2024.01.22 |
Weighted Least Squares filter라는게 sgbm 예제를 찾다가 나옴
[링크 : https://docs.opencv.org/3.4/d9/d51/classcv_1_1ximgproc_1_1DisparityWLSFilter.html]
필터라는 이름 답게
왼쪽의 노이즈가 심해 보이는 깊이 정보를, 면 단위로 정렬해서 보기 쉽게 변환해준다.
[링크 : https://forum.opencv.org/t/bad-disparity-map-with-sgbm-algorithm/8209]
[링크 : https://stackoverflow.com/questions/62627109/how-do-you-use-opencvs-disparitywlsfilter-in-python]
[링크 : https://amroamroamro.github.io/mexopencv/opencv_contrib/disparity_filtering_demo.html]
+
BM(block match) 알고리즘에 filter 적용 예제
[링크 : https://docs.opencv.org/4.x/d3/d14/tutorial_ximgproc_disparity_filtering.html]
+
2024.02.28
WLS 필터는 별도의 패키지를 설치해야 한다
$ pip install opencv-contrib-python |
패키지 설치 후에 처리해보면 확실히 좀 더 나은 느낌이긴 하다.
BM 에 적용해봤으니 이제 SGBM 에도 해봐야..
WLS 필터 적용 전 | WLS 필터 적용 후 |
$ cat depth.py import numpy as np import cv2 as cv from matplotlib import pyplot as plt imgL = cv.imread('tsukuba_l.png', cv.IMREAD_GRAYSCALE) imgR = cv.imread('tsukuba_r.png', cv.IMREAD_GRAYSCALE) max_disparity=16 stereo = cv.StereoBM_create(max_disparity, blockSize=15) disparity = stereo.compute(imgL,imgR) plt.imshow(disparity) plt.show() right_matcher = cv.ximgproc.createRightMatcher(stereo); left_disp = stereo.compute(imgL, imgR); right_disp = right_matcher.compute(imgR, imgL); # Now create DisparityWLSFilter wls_filter = cv.ximgproc.createDisparityWLSFilter(stereo); sigma = 1.5 lmbda = 8000.0 wls_filter.setLambda(lmbda); wls_filter.setSigmaColor(sigma); filtered_disp = wls_filter.filter(left_disp, imgL, disparity_map_right=right_disp); plt.imshow(filtered_disp) plt.show() |
openCV + python + matplotlib (0) | 2024.05.23 |
---|---|
openCV stereo SBGM 예제, depth map을 imshow로 보기 (0) | 2024.02.26 |
opencv stereo 계산 알고리즘 (0) | 2024.02.24 |
opencv 스테레오 카메라 깊이 처리하기 (0) | 2024.02.21 |
opencv 스테레오 사진 깊이 분석 전처리 - 렌즈 왜곡 보정 (0) | 2024.02.20 |
SGBM이나 BM이나 간단하게 쓰려면 인자가 크게 변하지 않는 느낌이긴 한데.. 돌려봐야 알 듯.
max_disparity = 128 stereoProcessor = cv2.StereoSGBM_create(0, max_disparity, 21) |
depth map을 아래와 같이 변환하면 되나?
if (apply_colourmap): disparity_colour_mapped = cv2.applyColorMap((disparity_scaled * (256. / max_disparity)).astype(np.uint8), cv2.COLORMAP_HOT) cv2.imshow(window_nameD, disparity_colour_mapped) else: cv2.imshow(window_nameD, (disparity_scaled * (256. / max_disparity)).astype(np.uint8)) |
[링크 : https://github.com/tobybreckon/python-examples-cv/blob/master/stereo_sgbm.py]
+
2024.02.28
어찌어찌 변환은 완료. cv.threshold 라는 함수를 이용해서 맵을 만들고 막 변환하긴 하는데
솔찍히 멀 어떻게 변환한건진 좀더 봐야 할 듯. 근데 이거 말고도 matplotlib 에서 animation 기능으로 갱신이 가능하다고 하니
그걸 이용해봐도 될 듯.
$ cat depth.py import numpy as np import cv2 as cv from matplotlib import pyplot as plt imgL = cv.imread('tsukuba_l.png', cv.IMREAD_GRAYSCALE) imgR = cv.imread('tsukuba_r.png', cv.IMREAD_GRAYSCALE) max_disparity=16 stereo = cv.StereoBM_create(max_disparity, blockSize=15) disparity = stereo.compute(imgL,imgR) #plt.imshow(disparity,'gray') #plt.show() #cv.imshow("depth map", (disparity * (256/16)).astype(np.uint8)) _, disparity = cv.threshold(disparity, 0, max_disparity * 16, cv.THRESH_TOZERO) disparity_scaled = (disparity / 16.).astype(np.uint8) disparity_colour_mapped = cv.applyColorMap((disparity_scaled * (256. / max_disparity)).astype(np.uint8),cv.COLORMAP_HOT) cv.imshow("depth map", disparity_colour_mapped) cv.waitKey() |
openCV + python + matplotlib (0) | 2024.05.23 |
---|---|
openCV stereo SGBM WLS 필터 (0) | 2024.02.26 |
opencv stereo 계산 알고리즘 (0) | 2024.02.24 |
opencv 스테레오 카메라 깊이 처리하기 (0) | 2024.02.21 |
opencv 스테레오 사진 깊이 분석 전처리 - 렌즈 왜곡 보정 (0) | 2024.02.20 |
먼가 쓸데없이 복잡해서 외우고 쓰진 못할 듯 -_ㅠ
import sys import numpy numpy.set_printoptions(threshold=sys.maxsize) |
[링크 : https://stackoverflow.com/questions/1987694/how-do-i-print-the-full-numpy-array-without-truncation]
matplotlib animation (0) | 2024.02.28 |
---|---|
pip 패키지 관리 (0) | 2024.02.27 |
matplotlib grayscale image to 3d graph (0) | 2024.02.22 |
python tcp 서버 예제 (0) | 2024.01.22 |
파이썬 소켓 예제 (0) | 2024.01.17 |
라즈베리 설치할 때 cli로 설치하고
ultranav 꽃고 커서를 누르려다 이전/다음 페이지 눌렸는데 가상 터미널을 이동한다.
alt-shift-f1 ~ f10을 눌러서 사용했었는데, 원래 있던 기능인가?
[링크 : https://raspberrypi.stackexchange.com/questions/36099/open-tty1-with-another-shortcut]
rpi pico ADC 범위 (0) | 2024.07.16 |
---|---|
rpi pico / micropython (0) | 2024.07.15 |
rpi libcamera? (0) | 2024.02.26 |
3d 프린트 한 라즈베리 케이스 (0) | 2024.02.21 |
mariadb 라즈베리 파이 설정값 (0) | 2024.01.02 |