Opencv+Python PCB 판 그림 인식 절차
템 플 릿 일치 알고리즘 기반 PCB 판 모델 인식
사용 도구:
Python3、OpenCV
템 플 릿 매 칭 알고리즘 을 사용 하면 템 플 릿 매 칭 은 가장 원시 적 이 고 기본 적 인 모델 인식 방법 으로 특정한 대상 물의 도안 이 이미지 의 어디 에 있 는 지 연구 한 다음 에 대상 물 을 식별 하고 템 플 릿 매 칭 은 자신의 한계점 을 가진다.주로 평 행 이동 만 할 수 있다.즉,원래 이미지 의 매 칭 목 표 는 회전 이나 크기 변화 가 발생 하지 않 는 다.
PCB 와 대응 하 는 템 플 릿 을 미리 준비 하 십시오:
하위 모드:
기본 절 차 는 다음 과 같다.
1.전체 이미지 영역 에서 고정자 이미지 와 일치 하 는 작은 블록 영역 을 발견 합 니 다.
2.템 플 릿 이미지 선택 T(주어진 하위 이미지)
3.검 측 할 이미지 가 필요 합 니 다.원본 이미지 S
4.작업 방법:검 측 이미지 에 있어 왼쪽 에서 오른쪽으로,위 에서 아래로 템 플 릿 이미지 와 중첩,하위 이미지 의 일치 도 를 계산 하고 일치 정도 가 클 수록 이들 이 똑 같은 가능성 이 크다.
OpenCV 는 6 가지 템 플 릿 일치 알고리즘 을 제공 합 니 다.
제곱 차 정합 법 CVTM_SQDIFF;
정규 화 제곱 차 정합 법 CVTM_SQDIFF_NORMED;
관련 정합 법 CVTM_CCORR;
정규 화 관련 매 칭 법 CVTM_CCORR_NORMED;
상관 계수 정합 법 CVTM_CCOEFF;
정규 화 상관 계수 매 칭 법 CVTM_CCOEFF_NORMED;
뒤에 실험 을 통 해 우 리 는 주로 상기 6 가지 중에서 귀 일화 상관 수 정합 법 CV 를 선택 하 였 다TM_CCOEFF_NORMED,기본 원리 공식 은:
코드 부분 전시:
import cv2
import numpy as np
from matplotlib import pyplot as plt
#
img = cv2.imread('img8.bmp', 0)
#
template1=cv2.imread('moban1.bmp', 0)
template2=......
#
template=[template1,template2,template3,template4]
# :
res1=cv2.matchTemplate(img, template1, cv2.TM_CCOEFF_NORMED)
res2=cv2.matchTemplate(......)
#
min_val1, max_val1, min_loc1, max_loc1 =cv2.minMaxLoc(res1)
min_val2, ......
# (max_val), 1,
max_val=[1-max_val1,1-max_val2,1-max_val3,1-max_val4]
j=max_val.index(min(max_val))
#
h, w = template[j].shape[:2] # rows->h, cols->w
pes=cv2.matchTemplate(img, template[j], cv2.TM_CCOEFF_NORMED) #
in_val, ax_val, in_loc, ax_loc =cv2.minMaxLoc(pes)
#
left_top = ax_loc #
right_bottom = (left_top[0] + w, left_top[1] + h) #
cv2.rectangle(img, left_top, right_bottom, 255, 2) #
#
plt.subplot(121), plt.imshow(template[j], cmap='gray')
plt.title('pcb type'),plt.xticks([]), plt.yticks([])
#
plt.subplot(122), plt.imshow(img, cmap='gray')
plt.title('img'), plt.xticks([]), plt.yticks([])
plt.show()
실험 결과:전체 코드 와 사진 소재 가 필요 한 경우 블 로 거들 과 연락 할 수 있 는 댓 글 을 남 겨 주세요.
이상 은 Opencv+Python 이 PCB 판 그림 을 식별 하 는 절차 에 대한 상세 한 내용 입 니 다.Opencv+Python 이 PCB 판 을 식별 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.