두 가지, 하나는 바이두의 API를 사용하는 것입니다, 효과가있을 수 있지만, 하루에 50 번 호출 할 수있는 한계가 보인다
에서 AIP AipImageClassify 가져 오기 가져 오기 CV2 "당신의 AK SK APPID" "" "" APP_ID = 'X 축' API_KEY = 'X 축' SECRET_KEY = 'XX' 클라이언트 = AipImageClassify (APP_ID, API_KEY, SECRET_KEY) "" ""이미지를 읽기 " " DEF의 get_file_content (적인 filePath) : : 오픈 (적인 filePath, 'RB') FP AS와 반환 fp.read () 이미지 get_file_content = ( 'D : \\ before.jpg') " ""옵션 인수 "" " = {} 옵션 "" "" "라는 매개 화상 검출 체와" RET = client.objectDetect (화상 옵션) 인쇄 (RET) # 출력 네 개의 값, 그러나 파이썬과 상이한 # cv2.rectangle (이미지, 왼쪽 아래, 오른쪽 아래 좌표, 색상,선 두께) 이미지 cv2.imread = ( 'D : \\ after.jpg') cv2.rectangle (이미지 (24, 39) (464, 404), (0, 255, 0), 2) cv2.imwrite ( 'D : \\ d99.png'이미지)
OpenCV의 다른 방법을 사용하는 방법이고, https://blog.csdn.net/liqiancao/article/details/55670749
https://www.cnblogs.com/python-life/articles/8727692.html
배경 색상 차이가 상대적으로 큰 경우, 효과는 나쁘지 않다
# - * - 코딩 : UTF-8 - * - "" " 저자 : 앨런 이메일 : [email protected] 참조하기 : https://blog.csdn.net/liqiancao/article/details/55670749 참고 : 사용 파이썬 및 OpenCV의 이미지에서 객체를 검출하고, 객체가 삭감 "" " 가져 CV2 오기 NumPy와 같이 NP # 1 단계 :로드 포토, 계조 변환 : 화상 cv2.imread = ( '\\ IMG_20190601_110701.jpg D') = 그레이 cv2.cvtColor (화상 cv2.COLOR_BGR2GRAY) # 2 단계는 : X가 감산함으로써, X 방향, Y 방향의 기울기를 뺀 후, 소벨 연산자, y 방향의 기울기를 이용하여 계산되며, 높은 수준의 그라데이션 우리 잎 낮은 수직 기울기 및 화상 영역. = cv2.Sobel gradX (그레이 cv2.CV_32F, DX는 =. 1의 Dy = 0, ksize = -1) 레이디 = cv2.Sobel는 (그레이 cv2.CV_32F, DX = 0,의 Dy를 =. 1 ksize = -1) 상기 X로부터 Y 경사 구배 번호 빼기 구배 = cv2.subtract (gradX, 레이디) = cv2.convertScaleAbs 구배 (기울기) # 쇼 이미지 #의 cv2.imshow ( "첫 번째", 그라데이션) #의 cv2.waitKey () # 3 단계 : 이미지에 노이즈를 제거. 제 1 저역 통과 필터 스무딩 스플래시 화상 이미지의 고주파 노이즈를 평활화하는 데 도움이 될 것 (9 X 커널 9). # 대상 저역 통과 필터는 화상의 변화율을 감소시키는 것이다. AS는 주변 화소에 대해 화소마다 교체 의미한다. 이것은 원활하고 해당 영역 상당한 강도 변화를 치환 할 수 있습니다. #이어서, 이진화 된 이미지 블러. 모든 화소 그라데이션 이미지 (90)가 0 (흑)로 설정된 값 이하이다. 그렇지 않으면, 픽셀은 255 (흰색)으로 설정된다. 임계 값 및 이미지 블러 # 흐리게 = cv2.blur (구배 (. 9 ,. 9)) _, cv2.threshold 임계점 = (흐리게, 90, 255, cv2.THRESH_BINARY) # 1 화상 표시 #의 cv2.imshow ( "임계점"을 ) 임계점 #의 cv2.waitKey () #의 STEP4을 : 이미지에서 우리는 쉽게 지역 곤충 다음과 같은 프로그램을 식별 할 수있게, 블랙 예비, 우리는 흰색 채우기에게 이러한 빈을 사용하는 신체 꿀벌의 많은 지역이 있다는 것을 볼 수 위 가 어떤을 할 필요 #을 동작의 형태 학적 특징. 커널 = cv2.getStructuringElement (cv2.MORPH_RECT (25 , 25)) = cv2.morphologyEx 청산 (임계점, cv2.MORPH_CLOSE, 커널) # 쇼 이미지 #의 cv2.imshow ( "closed1", 휴일) #의 cv2.waitKey () #의 5 단계 : 그래프에서 우리는 흰색에 약간의 작은 이미지가있는 것을 발견 방해 반점, 후 곤충 윤곽 감지, 그들은 제거해야합니다. 네 가지 형태의 침식 및 확장을 실행합니다. 미란 번호의의 확장이와의 시리즈를 수행 휴관일 = cv2.erode (폐쇄, 없음, 반복이 =. 4) 휴관일 = cv2.dilate (폐쇄, 없음, 반복 =. 4) # 쇼 이미지 #의 cv2.imshow ( "closed2", 휴일) cv2.waitKey 번호 () #의 STEP6 : 곤충 프로필 영역을 식별합니다. #의 Cv2.findContours () 함수 # 이미지 즉, 흑백 (되지 계조), 흑백이어야 검색 될 첫번째 파라미터 후 # 화상 판독 먼저 변환된다 그레이 있도록하며 이진 영상으로 변환, 세 번째 단계에서 우리 cv2.threshold () 함수는 이진도 있었다. # 두 번째 매개 변수는 검색 모드의 윤곽을 나타내는 네있다 : # 1. cv2.RETR_EXTERNAL 만 외형의 감지 표현한다 계층 적 관계를 구축하지 않는 윤곽을 감지 # 2 cv2.RETR_LIST을 # 3 cv2.RETR_CCOMP 윤곽은 두 단계, 상기 보어의 정보의 경계 층 외부 경계 위를 확립한다. 객체를 전달 구멍이있는 경우, 객체의 경계는 최고입니다. # 4. cv2.RETR_TREE는 계층 적 트리 구조의 프로파일을 구축 할 수 있습니다. # 세번째 파라미터가 윤곽의 근사 모든 윤곽 점은, 화소 위치의 차이의 두 인접한 포인트 (1), 즉 최대 (ABS (X1-X2)을 초과하지 않는 #의 cv2.CHAIN_APPROX_NONE 저장소 , ABS (Y2-Y1) ). 1 == , 프로파일 정보를 저장하는, 예를 들면, 직사각형의 프로파일은 단지 4 점 종점 방향의 좌표를두고 수평 방향 # cv2.CHAIN_APPROX_SIMPLE 압축 수직 방향 소자의 대각선 방향 #의 cv2.findContours ()를 함수 각 프로파일에 대한 해당 속성이 존재 한 프로파일 자체이며, 두 값을 반환한다. #의 Cv2.findContours () 함수는 제 목록의 값을 반환리스트 요소는 NumPy와의 ndarray로 표시되는 각 화상의 프로파일이다. # 윤곽에 각 지점의 좌표 각 ndarray을 저장합니다. 우리는 목록을 정렬, 프로파일은 우리가 대부분의 곤충 포인트 찾고있는 프로필입니다. cv2.findContours에서의 X는 = (closed.copy () cv2.RETR_EXTERNAL는 cv2.CHAIN_APPROX_SIMPLE) # 오기 PDB의 #의 pdb.set_trace () _a은, 탄소 나노 튜브는 _B X = C는 정렬 (탄소 나노 튜브, cv2.contourArea 키 = = = 후진 ) 진정한 [0] cv2.drawContours하여 이미지에 그려진 # OpenCV의 개요. # 첫번째 파라미터는 어떤 이미지가 그려진 형상에 표시 # 두번째 파라미터 프로필 자체, 파이썬리스트이며 ,이 -1이면 세번째 파라미터 윤곽 #가있는 프로파일리스트 지정 상기 윤곽 모두 # 네번째 파라미터는 등고선의 색상 # 다섯 번째 파라미터는 등고선의 두께 #의 cv2.minAreaRect () 함수 : # 작은 주로 결정된 설정 점을 포함하는 직사각형 영역이 직사각형을 가질 수있다 편향 각은, 이미지의 경계와 평행하지 않을 수있다. 회전 계산 형상의 가장 큰 바운딩 박스 번호 RECT = cv2.minAreaRect (C) # = RECT cv2.minAreaRect 튜브 (CNT [. 1]) 박스 = np.int0 (cv2.boxPoints (RECT)) # 그리는 바운딩 박스가 상기 arounded 바코드를 검출하고 이미지 표시 프레임되지 않을 생산 환경 하에서 #의 #의 cv2.drawContours (화상 [상자] -1, (0, 255, 0) ,. 3) #의 cv2.imshow ( "이미지", 이미지) # cv2.imwrite ( "contoursImage2.jpg", 이미지) #의 cv2.waitKey (0) # 7 단계 : 자르기. 상자가 녹색 사각형의 네 꼭지점의 좌표에 저장됩니다. 나는도 자르기 곤충 빨간색 사각형 이미지를 누릅니다. # 네 정점의 X, 최소값과 최대 값의 y 좌표를 찾는다. 새로운 고성능 이미지 = MAXY-MINY = 폭 맥스-되어 minX. XS는 = [I [0]에 대한 I는 상자] Ys 일은 = [I [. 1] I 박스에 대한]는 X1 = 분 (XS) X2 = 최대 (XS) Y1 = 분 (Ys 일이다) Y2 = 최대 (Ys 일이다) 하이트 = Y2 - Y1 폭 = X2 - X1의 cropImg 이미지 = Y1 : 하이트 + Y1, X1 : 폭 X1의 +] #보기 이미지 cv2.imshow ( "cropImg"cropImg) cv2.imwrite ( 'D : \\ result.jpg' , cropImg) 인쇄 ( "DONE") cv2.waitKey ()