728x90

😒 저 저 저 개념없는 나 61

[Python | numpy] numpy.clip()

numpy.clip(arr,min,max) arr 내의 element들에 대하여 min값보다 작은 값들을 min 값으로 바꾸어 주고 max 값보다 큰 값들은 max 값으로 변경하여주는 함수 dst_x = np.clip(dst_x, 0 ,255).astype(np.uint8) dst_y = np.clip(dst_y, 0 ,255).astype(np.uint8) 영상처리의 sobel filter 실습에 있던 코드 dst 내에서 픽셀의 범위를 벗어나는 모든 픽셀들을 overflow 되지 않도록 막아준다.

[Python | numpy] numpy.dot()

numpy.dot() 은 numpy array를 곱할 때 사용한다. 1. 곱하는 두 행렬 A와 B가 1차원 행렬일 경우 각 자리수 끼리 곱해서 전부 더한다. ex) import numpy as np a = np.array([1,2,3]) b = np.array([2,3,4]) print(np.dot(a,b)) => 출력값 : 1*2 + 2*3 + 3*4 == 12 2. 곱하는 두 행렬 A, B가 2차원 행렬일 경우 일반적인 행렬 곱을 수행한다. import numpy as np def get_dot(): derivative = np.array([[-1, 0 , 1]]) blur = np.array([[1],[2],[1]]) x_dot = np.dot(blur, derivative) y_dot = np.d..

[C++] auto 타입 추론

??? 내가 auto를 찾아보게 된 경로가 무엇인가? C++을 사용하여 set을 구현하는 도중 set의 모든 element에 접근하여 이들을 출력하는 for문을 확인하였다. cout 초기화 값에 따라 알아서 데이터 타입을 정해주는 키워드 라고 불린다. => 선언한 변수나 람다 식의 타입을 컴파일러에게 추론하도록 맡긴다. ex) auto a1 = 10; // int 타입 auto a2 = 10.0f; // float 타입 auto a3 = "c"; // char 타입 auto a4 = "BlockDMask"; // string 타입 auto a5 = {10, 20, 30}; //int 배열 타입 단순한 자료형 뿐만 아니라 iterator를 선언하는 데에서도 적용 할 수 있다. #include #includ..

[Linux | C] memset 함수

void* memset(void* ptr, int value, size_t num); - ptr : 채우고자 하는 메모리의 시작 포인터 (시작주소) - value : 메모리에 채우고자 하는 값, int 형으로 선언되어 있지만 내부에서는 unsigned char로 변환되어서 저장된다. - num 채우고자 하는 바이트의 수 == 채우고자 하는 메모리의 크기 ex) pingpong 구현 中 memset(buf, 0x00, BUF_SIZE); => 버퍼에 buffer size 크기만큼 0을 저장한다.

[Python] 오류 발생 (operands could not be broadcast together with)

떴어요!!! ㅇ,오류.... 파이썬 오류 operands could not be broadcast together with 뭐시기가 떴다구요!! 빨리빨리!! numpy를 사용해서 average_filter 이자 box_filter인 것을 구현하고자 하던 도중 오류가 나버렸다. 살펴보니 차원이 다른 배열들을 연산하고자 할 때 Broadcasting이 진행되지 않는 경우 중 하나의 오류에 걸린 것 같다. Broadcasting을 시키려면 기준 축에 있는 원소의크기(개수)가 서로 같아야지 짝을 맞추어서 확산(broadcasting,propagating)을 할 수 있다고한다. 대강 보니(514,514) (3,3) 두 사이즈가 브로드 캐스팅이 안된다는 얘기 같은데. 당연히 안될....값....인걸....? 알고보..

[Linux] System call 작동 원리, 동작 예시

System call 응용 프로그램에서 운영체제에게 기능을 수행해달라고 요청하는 하나의 수단. user processor가 소프트웨어 인터럽트를 통해 커널의 기능을 이용하기 위한 서비스를 요청하는 하나의 방법. 소프트웨어 인터럽트 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다. 각 시스템 콜에는 고유한 번호가 할당되고 시스템 콜 인터페이스는 이러한 번호에 따라 인덱스 되는 테이블(IDT)을 유지된다 IDT (Interrupt Descriptor Table) 테이블 리눅스에서는 인터럽트 처리를 위해서 IDT를 사용하는데 각 인터럽트를 처리하기 위한 서비스 루틴을 함수로 구현해두고, 각 함수의 시작점 주소(handler fucn..

[JAVA] JAVA와 C언어

잃어버렸던 JAVA에 대한 정보들을 되살리가다가 느낀건데 C언어와 JAVA의 차이 같은 게 궁금했다. 우선 JAVA가 C언어에서 파생된 언어인 것은 알고 있었지만 정확하게 어떤 부분에서 달리쓰이는지 알고 있지 않았기에 오늘 알아가보쟈 히 ^__^ C언어 배경 컴퓨터 산업 초기에 주로 회사에서는 UNIX라는 운영체제를 사용했다. 이의 가장 큰 문제는 하드웨어의 읜존도가 높아서 컴퓨터가 이해하기 쉽고 인간이 이해하기 어려운 어셈블리언어(저급언어)로 만들어 졌기 때문에 컴퓨터 각각의 기종에 따른 호환성의 문제가 있었다. 즉. 하드웨어가 변경되면 프로그램을 새로 개발해야 했다. 때문에 기종간의 호환이 가능하고 고급 언어이면서, 컴퓨터의 하드웨어 제어가 가능한 어셈블리 언어의 특성을 지닌 새로운 언어의 등장이 필..

728x90