๋ชฉ๋ก๐ฉ๐ป IoT (Embedded) (235)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?

โญ ํฐ๋ฏธ๋์ ๊ธฐ๋ณธ ์ ์ด kbhit() ํจ์๋ ํค๋ณด๋์ ์ ๋ ฅ์ ๊ฐ์งํ๋ ํจ์ (์ ๋์ค์์ fcntl() ํจ์์ ํฐ๋ฏธ๋ ์ ์ด๋ก ๊ตฌํ ๊ฐ๋ฅ) ํฐ๋ฏธ๋์ ๋ก์ปฌ์ด๋ ๋คํธ์ํฌ๋ฅผ ํตํด์ ์๊ฒฉ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์ ๋์ค ์์คํ ๊ณผ์ ๋ํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๋๋ฐ์ด์ค๋ก /dev/tty ๋๋ฐ์ด์ค ํ์ผ ์ฌ์ฉํจ ํฐ๋ฏธ๋์ ๊ธฐ๋ณธ ์ ์ด๋ termios ๊ตฌ์กฐ์ฒด์ ๊ด๋ จ ํจ์๋ค์ ์ฌ์ฉํจ (ํ๋ฉด์ ์ถ๋ ฅํ ์ ์๋๋ก ํฐ๋ฏธ๋ ์ ์ด ํจ์์ธ tcgetattr, tcsetattr ์ด์ฉํด์ ํฐ๋ฏธ๋์ ๋ํ ๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ค์ ํจ) // kbhit() ํจ์๋ ํค๋ณด๋์ ์ ๋ ฅ์ ๊ฐ์งํ๋ ํจ์ (์ ๋์ค์์ fcntl() ํจ์์ ํฐ๋ฏธ๋ ์ ์ด๋ก ๊ตฌํ ๊ฐ๋ฅ) // ํฐ๋ฏธ๋์ ๋ก์ปฌ์ด๋ ๋คํธ์ํฌ๋ฅผ ํตํด์ ์๊ฒฉ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์ ๋์ค ์์คํ ๊ณผ์ ๋ํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๋๋ฐ์ด์ค๋ก /dev/..

โญ ํ์ผ ์ฒ๋ฆฌ์ ํ์ค ์ ์ถ๋ ฅ // ํ์ค ์ ์ถ๋ ฅ ํจ์๋ฅผ ์ด์ฉํด์ ํ์ผ์ ๋ณต์ฌํ๋ค // ์ถ๋ ฅ ๋ฐฉํฅ์ ์ ํ๋ ํจ์์ธ fprint() ํจ์์ ํ์ค ์๋ฌ(etreer) ์ด์ฉํด์ ์ ์ฅํ๋ค #include int main(int argc, char **argv) { int n; FILE *in, *out; char buf[BUFSIZ]; // ๋ช ๋ นํ ์ธ์๋ก ๋ณต์ฌํ ํ์ผ๋ช ์ด ์๋ ๊ฒฝ์ฐ์ ์๋ฌ๋ฅผ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค if (argc != 3) { fprintf(stderr, "Usage: fcopy file1 file2\n"); return -1; } // ๋ณต์ฌ์ ์๋ณธ์ด ๋๋ ํ์ผ์ ์ฝ๊ธฐ ๋ชจ๋๋ก ์ฐ๋ค // fopen() : ์ง์ ํ ๊ฒฝ๋ก์ ์๋ ํ์ผ์ ์คํธ๋ฆผ์ ์ด๊ณ ๋ฒํผ๋ฅผ ํ ๋นํ๋ค // (const char *path: ํ์ผ..

โญ ํ์ผ ์ฒ๋ฆฌ์ ํ์ค ์ ์ถ๋ ฅ // ํ๋์ ํ์ผ์ ๋ด์ฉ์ ๋ค์ ํ์ผ๋ก ๋ณต์ฌํ๋ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์ // 2๊ฐ์ ํ์ผ๋ช ์ ์ ๋ ฅ๋ฐ๊ณ 2๊ฐ์ ํ์ผ์ ์ด๊ฑฐ๋ ์์ฑํ ํ ์ฒซ ๋ฒ์งธ ํ์ผ์์ ๋ฐ์ดํฐ ์ฝ์ด์ ๋ ๋ฒ์งธ ํ์ผ๋ก ์ด๋ค #include // ์ ๋์ค ํ์ค ์์คํ ์ฝ #include #include #include #include #include int main(int argc, char **argv) { int n, in, out; char buf[1024]; // ๋ช ๋ นํ ์ธ์๋ก ๋ณต์ฌํ ํ์ผ๋ช ์ด ์๋ ๊ฒฝ์ฐ์ ์๋ฌ ์ถ๋ ฅํ๊ณ ์ข ๋ฃ if (argc < 3) { // write() : ์ด๋ฆฐ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ด์ฉํด์ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ด ๋งํผ ํ์ผ ๋ด์ ์คํ์ ์ฆ๊ฐ // ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ์ ๋ฐํ 0 & ์คํจ..

๐ OpenCV ๋ก image ๋ถ๋ฌ์ค๊ธฐ #include "opencv2/opencv.hpp" #include using namespace cv; using namespace std; int main() { std::cout

๐ OpenCV ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ ํ๊ธฐ (debug, release ๋๋ค) $(OPENCV_DIR)\\include $(OPENCV_DIR)\\x64\\vc16\\lib ๐ OpenCV ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ ํ๊ธฐ (debug, release ๋๋ค) $(OPENCV_DIR)\\x64\\vc16\\lib ๐ ์์ฑ ํ์ด์ง ์ฐฝ์์ ์ถ๊ฐ ์ข ์์ฑ ์ค์ (debug, release ๋๋ค) opencv_world480.lib => release opencv_world480d.lib => debug ๐ So,,, ๊ท์ฐฎ์ฃ ? ์ด๊ฒ๋ค์ ํ ํ๋ฆฟ์ผ๋ก ๋ง๋ค์ด๋ฒ๋ฆฝ์๋ค! ๐ ์ถ๋ ฅ๊ฒฐ๊ณผ #include "opencv2/opencv.hpp" #include int main() { std::cout

๐ ์ค์นํ๊ธฐ OpenCV ์น ์ฌ์ดํธ์์ ์ค์น ์คํ ํ์ผ์ ๋ด๋ ค๋ฐ์ ์ค์นํ๋ ๋ฐฉ๋ฒ ๐ ์์น๋? ํด๋ ๊ตฌ์ฑ์? - C:\opencv\sources : OpenCV ์์ค ์ฝ๋ ํ์ผ - C:\opencv\build : ์์ค ์ฝ๋๋ก๋ถํฐ ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ๊ณผ ํค๋ ํ์ผ, ๊ทธ๋ฆฌ๊ณ ๊ธฐํ ์ ์ฉํ ํ์ผ์ด ์ ์ฅ๋์ด ์์ - C:\opencv\build\include : OpenCV ๊ด๋ จ ํค๋ ํ์ผ(*.hpp) - C:\opencv\build\x64 : ๋ฏธ๋ฆฌ ๋น๋๋ OpenCV ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ - C:\opencv\build\x64\vc16 : bin๊ณผ lib ํด๋ - bin : ํ๋ก๊ทธ๋จ ์คํ ์ ํ์ํ ๋์ ์ฐ๊ฒฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(DLL, Dynamic Linking Library) ํ์ผ๊ณผ OpenCV ์ ํธ๋ฆฌํฐ ํ๋ก๊ทธ๋จ์ด ์..

๐ wsl ์ด ๋๋ง๋ค.. ์๊ทน๋๋ ๋ฌธ๊ตฌ LifeGoal! ๋์ฐ๊ธฐ // shell์ export PICO ๋ฑ๋ก์ํค๊ธฐ!! // ์ค์ ํ์ผ ๋งจ ๋ฐ์... ํ๋ก๊ทธ๋จ ๋ฃ์ผ๋ฉด ๋จ vim .bashrc // .bashrc ์ ์ถ๊ฐํ ๊ฒ export PICO_SDK_PATH=~/pico/pico-sdk cd (๋ด ํ ๋๋ ํฐ๋ฆฌ, or main.out ํ์ผ ์์น) ./main.out // ๋์ LifeGoal ์ wsl ์คํ๋ง๋ค ์๊ธฐ ์ํค๊ธฐ // shell์ export PICO ๋ฑ๋ก์ํค๊ธฐ!! // export PICO_SDK_PATH=~/pico/pico-sdk // vim .bashrc // ์ค์ ํ์ผ ๋งจ ๋ฐ์... ํ๋ก๊ทธ๋จ ๋ฃ์ผ๋ฉด ๋จ // cd (๋ด ํ ๋๋ ํฐ๋ฆฌ) // ./main.out #include #inclu..

๐ ๋ฌธ์ ์ค์บํ๊ธฐ by.์ํ import cv2 import numpy as np from datetime import datetime from time import sleep points = np.zeros((4,2), dtype=np.float32) count = 0 def mouseHandler(event, x, y, flags, param): global count if event==cv2.EVENT_LBUTTONDOWN: cv2.circle(img, (x,y), 5, (0, 0, 255), -1) #๋ฐ์ง๋ฆ 5ํฌ๊ธฐ ๋นจ๊ฐ ์ cv2.imshow("Capture", img) try: points[count] = [x, y] count += 1 if count == 4: sum_ = points.sum..