셀 카운트 건망록

8066 단어 Python3OpenCV
어떤 아마추어는 잊기 쉽기 때문에 메모 쓰기

환경
windous10 home(64bit)
anacondanavigator
Jupiternotebook
python3(3.7.7)
opencv(3.4.2)

하고 싶은 일로서는 입자(입자)의 수를 세는 프로그램을 작성하고 싶다.
덧붙여서 초학자.
주위에 가르쳐 주는 사람은 없기 때문에 독학.
재미있는 부분이 많이 있습니다.

참고문헌
htps : // cv에서 ch. C / 코 t /
C++ 용이므로 파이썬에 맞추는 데 어려움을 겪었습니다.

사용 화상으로서는 상기 참고문헌에 모방종 화상을 사용.


사용 라이브러리



cell_count.ipynb
import cv2
import sys
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

부딪치는 opencv와 numpy만으로 충분합니다.
자신 안에서 기본 설정하고 pandas와 matplotlib를 더하고 있습니다.

cell_count.iypnb
img = cv2.imread('/seed.JPG',1)
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

상단은 계산하고 싶은 이미지
하단은 그레이 스케일화한 것.
읽는 시점에서 ('/seed.JPG',0) 하지만 그레이 스케일화 가능하다고 생각했지만
오류가 나왔기 때문에 포기하고 회색조를 추가했다.

cell_count.ipynb
size = (800,600)
img_resize = cv2.resize(img_gray,size) 

사용 화상의 사이즈가 크기 때문에 리사이즈하고 있습니다.
(단지 화면에 맞지 않았기 때문에…)
이미지 사이즈가 거기까지 크지 않으면 전혀 필요 없다고 생각합니다.

cell_count.ipynb
#画像の高さ、幅を取得
h, w = img_resize.shape

#画像の前処理(拡大)
mag = 1

#画像の前処理(ぼかし)
img_blur = cv2.GaussianBlur(img_resize,(5,5),0)

#2値画像を取得
threshold = 50
ret,img_th = cv2.threshold(img_resize, threshold, 255, cv2.THRESH_BINARY)

#モルフォロジー変換(膨張)
kernel = np.ones((2,2),np.uint8)
img_th2 = cv2.dilate(img_th,kernel,)

#境界検出と描写
__, cut, __ = cv2.findContours(img_th2.astype(np.uint8),cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
img_raw = cv2.resize(img,(w*mag, h*mag))
img_cut = cv2.drawContours(img_raw, cut, -1,(0,255,255),1)
print(len(cut))


참고의 순서대로 가서는 화상 화상 자체가 너무 커져서 표시할 수 없었기 때문에
전처리 부분은 mag = 1 로 하고 있다(화상 자체를 리사이즈하고 있기 때문에.)

2치화에 관해서는 threshold = 50 는 처리 화상을 확인하면서 스스로 생각하는 적절한 값으로 하고 있다.

모폴로지와 경계 검출에 대해서는 정직 절반도 이해하지 않는 것이 실정… orz
Udemy에서의 "opencv에서의 이미지 처리"강좌를 참고로 어떻게든 쓴 느낌
print(len(cut)) 는 세운 array를 표시하고 싶기 때문에 추가.
결과는【475】
여기의 부분은 tkinter 등으로 표시하도록 하고 싶지만
전혀 모릅니다.

cell_count.ipynb
cv2.imshow("cell",img_cut)
cv2.waitKey(0)
cv2.destroyAllWindows()

결과 표시.



여기까지 오는데 엄청 힘들고 고생했지만 어떻게든 원하는 이미지를 얻을 수 있었습니다.

흑백이 분명한 이미지에 대해서는 문제없이 갈 수 있지만
입자 (입자) 이외에 색감이있는 것에 관해서는 잘 작동하지 않았기 때문에
색성분을 빼고의 2치화 등을 시험해, 절찬 좌절하고 있는 도중입니다…( ゚Д゚)

tkinter와의 조합도 하고 싶지만 전혀 지식이 없기 때문에
기억하는 일이 많아서…

이상입니다.

좋은 웹페이지 즐겨찾기