scratch assay1
10695 단어 OpenCV3파이썬생물학Jupyter-notebook
jupyter에서 작업했습니다.
각 단계에서 처리된 결과의 이미지는 다음 명령으로 표시하면서 진행되었습니다.
이미지 표시 코드 정보
이하의 코드를 각 처리 후에 실행해, 매번 화상의 확인을 실시했습니다.
scratch.py#データ解読 (hoge:各処理で返されるオブジェクト)
decoded_bytes = cv2.imencode(".png", hoge)[1].tobytes()
#Image関数
Image(decoded_bytes)
① 라이브러리 가져오기
scratch.pyimport cv2
import math
import numpy as np
②이미지 불러오기
scratch.py(hoge:画像が入ってるフォルダ名)
img_src = cv2.imread("C:/Users/hoge/image.jpg", 1) #入力画像(カラー)の読み込み
#img_src = cv2.imread("C:/Users/hoge/image.jpg", 0) #入力画像(白黒)の読み込み
③엣지를 검출(canny법)
scratch.pyimg_dst = cv2.Canny(img_src, 30, 100) #出力画像 = cv2.Canny(img_src, 閾値1, 閾値2)
④이미지 흐리게 (평활화, blur)
우선 13회 반복
scratch.pyi=0
while i < 13:
img_dst2 = cv2.GaussianBlur(img_dst, (11, 11), 1)
i = i + 1
⑤ 수축처리(erode)와 팽창처리(dilate)
scratch.py#8近傍指定の行列を作成
element8 = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]], np.uint8)
#一回膨張処理
img_dst3 = cv2.dilate(img_dst2, element8, iterations = 1)
#5回収縮処理
i = 0
while i < 5:
img_dst3 = cv2.erode(img_dst3, element8, iterations = 1)
i = i + 1
#5回膨張処理
i=0
while i < 5:
img_dst3 = cv2.dilate(img_dst3, element8, iterations = 1)
i = i + 1
⑥2치화
scratch.pythresh = 60
ret, img_dst4 = cv2.threshold(img_dst3, thresh, 255, cv2.THRESH_BINARY)
#出力画像 = cv2.thresh(img_src, 閾値, 最大値、閾値処理の種類)
#処理の種類(THRESH_BINARY_INV、THRESH_TRUNC、THRESH_TOZERO、THRESH_TOZERO_INV)
⑦흑백 반전
img_dst5 = 255 - img_dst4
⑧면적 산출 패턴 1
흰색 부분의 픽셀을 계산하는 패턴
scratch.pycv2.countNonZero(img_dst5)
결과
9895
⑨면적 산출 패턴 2
윤곽을 감지하여 둘러싸인 부분의 면적을 모두 계산하여 (모든 영역의 레이블도 됨) 합계 또는 최대 부분의 면적을 반환하는 패턴
scratch.py#findContours(入力画像、輪郭抽出モード、輪郭の近似手法)
#輪郭抽出モード (RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE)
#輪郭の近似手法 (CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE)
contours = cv2.findContours(img_dst5, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
#算出された全部の面積の数字をリストに放り込んで最大値(max)、または合計(sum)を返す
area = []
for i in contours:
area.append(cv2.contourArea(i))
#sum(area)
max(area)
결과
9625.5
⑩ 면적 산출 패턴 2에서 검출한 윤곽을 오리지널의 판독 화상에 합성
면적의 산출 대상 영역이 올바른지 확인하고 싶었다.
scratch.pyanalyzed_img = cv2.drawContours(img_src, contours, -1, (0,255,0), 3)
마지막으로
스크래치된 에리어에 세포가 섬을 형성했을 때(인테리어 안에 둘러싸이게 되었을 때), 이번 면적 산출법으로는 대처할 수 없기 때문에, 무엇인가 대응해야 하는가라고 생각합니다. 이제 생각하는 것에 지쳤기 때문에 이 근처에서 끝납니다.
다음에 폴더에 들어간 모든 이미지를 처리하는 일괄 처리 코드를 작성합니다.
Reference
이 문제에 관하여(scratch assay1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/machamacha/items/3c6d02b2c97f82caec12
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#データ解読 (hoge:各処理で返されるオブジェクト)
decoded_bytes = cv2.imencode(".png", hoge)[1].tobytes()
#Image関数
Image(decoded_bytes)
scratch.py
import cv2
import math
import numpy as np
②이미지 불러오기
scratch.py(hoge:画像が入ってるフォルダ名)
img_src = cv2.imread("C:/Users/hoge/image.jpg", 1) #入力画像(カラー)の読み込み
#img_src = cv2.imread("C:/Users/hoge/image.jpg", 0) #入力画像(白黒)の読み込み
③엣지를 검출(canny법)
scratch.pyimg_dst = cv2.Canny(img_src, 30, 100) #出力画像 = cv2.Canny(img_src, 閾値1, 閾値2)
④이미지 흐리게 (평활화, blur)
우선 13회 반복
scratch.pyi=0
while i < 13:
img_dst2 = cv2.GaussianBlur(img_dst, (11, 11), 1)
i = i + 1
⑤ 수축처리(erode)와 팽창처리(dilate)
scratch.py#8近傍指定の行列を作成
element8 = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]], np.uint8)
#一回膨張処理
img_dst3 = cv2.dilate(img_dst2, element8, iterations = 1)
#5回収縮処理
i = 0
while i < 5:
img_dst3 = cv2.erode(img_dst3, element8, iterations = 1)
i = i + 1
#5回膨張処理
i=0
while i < 5:
img_dst3 = cv2.dilate(img_dst3, element8, iterations = 1)
i = i + 1
⑥2치화
scratch.pythresh = 60
ret, img_dst4 = cv2.threshold(img_dst3, thresh, 255, cv2.THRESH_BINARY)
#出力画像 = cv2.thresh(img_src, 閾値, 最大値、閾値処理の種類)
#処理の種類(THRESH_BINARY_INV、THRESH_TRUNC、THRESH_TOZERO、THRESH_TOZERO_INV)
⑦흑백 반전
img_dst5 = 255 - img_dst4
⑧면적 산출 패턴 1
흰색 부분의 픽셀을 계산하는 패턴
scratch.pycv2.countNonZero(img_dst5)
결과
9895
⑨면적 산출 패턴 2
윤곽을 감지하여 둘러싸인 부분의 면적을 모두 계산하여 (모든 영역의 레이블도 됨) 합계 또는 최대 부분의 면적을 반환하는 패턴
scratch.py#findContours(入力画像、輪郭抽出モード、輪郭の近似手法)
#輪郭抽出モード (RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE)
#輪郭の近似手法 (CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE)
contours = cv2.findContours(img_dst5, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
#算出された全部の面積の数字をリストに放り込んで最大値(max)、または合計(sum)を返す
area = []
for i in contours:
area.append(cv2.contourArea(i))
#sum(area)
max(area)
결과
9625.5
⑩ 면적 산출 패턴 2에서 검출한 윤곽을 오리지널의 판독 화상에 합성
면적의 산출 대상 영역이 올바른지 확인하고 싶었다.
scratch.pyanalyzed_img = cv2.drawContours(img_src, contours, -1, (0,255,0), 3)
마지막으로
스크래치된 에리어에 세포가 섬을 형성했을 때(인테리어 안에 둘러싸이게 되었을 때), 이번 면적 산출법으로는 대처할 수 없기 때문에, 무엇인가 대응해야 하는가라고 생각합니다. 이제 생각하는 것에 지쳤기 때문에 이 근처에서 끝납니다.
다음에 폴더에 들어간 모든 이미지를 처리하는 일괄 처리 코드를 작성합니다.
Reference
이 문제에 관하여(scratch assay1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/machamacha/items/3c6d02b2c97f82caec12
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(hoge:画像が入ってるフォルダ名)
img_src = cv2.imread("C:/Users/hoge/image.jpg", 1) #入力画像(カラー)の読み込み
#img_src = cv2.imread("C:/Users/hoge/image.jpg", 0) #入力画像(白黒)の読み込み
scratch.py
img_dst = cv2.Canny(img_src, 30, 100) #出力画像 = cv2.Canny(img_src, 閾値1, 閾値2)
④이미지 흐리게 (평활화, blur)
우선 13회 반복
scratch.pyi=0
while i < 13:
img_dst2 = cv2.GaussianBlur(img_dst, (11, 11), 1)
i = i + 1
⑤ 수축처리(erode)와 팽창처리(dilate)
scratch.py#8近傍指定の行列を作成
element8 = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]], np.uint8)
#一回膨張処理
img_dst3 = cv2.dilate(img_dst2, element8, iterations = 1)
#5回収縮処理
i = 0
while i < 5:
img_dst3 = cv2.erode(img_dst3, element8, iterations = 1)
i = i + 1
#5回膨張処理
i=0
while i < 5:
img_dst3 = cv2.dilate(img_dst3, element8, iterations = 1)
i = i + 1
⑥2치화
scratch.pythresh = 60
ret, img_dst4 = cv2.threshold(img_dst3, thresh, 255, cv2.THRESH_BINARY)
#出力画像 = cv2.thresh(img_src, 閾値, 最大値、閾値処理の種類)
#処理の種類(THRESH_BINARY_INV、THRESH_TRUNC、THRESH_TOZERO、THRESH_TOZERO_INV)
⑦흑백 반전
img_dst5 = 255 - img_dst4
⑧면적 산출 패턴 1
흰색 부분의 픽셀을 계산하는 패턴
scratch.pycv2.countNonZero(img_dst5)
결과
9895
⑨면적 산출 패턴 2
윤곽을 감지하여 둘러싸인 부분의 면적을 모두 계산하여 (모든 영역의 레이블도 됨) 합계 또는 최대 부분의 면적을 반환하는 패턴
scratch.py#findContours(入力画像、輪郭抽出モード、輪郭の近似手法)
#輪郭抽出モード (RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE)
#輪郭の近似手法 (CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE)
contours = cv2.findContours(img_dst5, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
#算出された全部の面積の数字をリストに放り込んで最大値(max)、または合計(sum)を返す
area = []
for i in contours:
area.append(cv2.contourArea(i))
#sum(area)
max(area)
결과
9625.5
⑩ 면적 산출 패턴 2에서 검출한 윤곽을 오리지널의 판독 화상에 합성
면적의 산출 대상 영역이 올바른지 확인하고 싶었다.
scratch.pyanalyzed_img = cv2.drawContours(img_src, contours, -1, (0,255,0), 3)
마지막으로
스크래치된 에리어에 세포가 섬을 형성했을 때(인테리어 안에 둘러싸이게 되었을 때), 이번 면적 산출법으로는 대처할 수 없기 때문에, 무엇인가 대응해야 하는가라고 생각합니다. 이제 생각하는 것에 지쳤기 때문에 이 근처에서 끝납니다.
다음에 폴더에 들어간 모든 이미지를 처리하는 일괄 처리 코드를 작성합니다.
Reference
이 문제에 관하여(scratch assay1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/machamacha/items/3c6d02b2c97f82caec12
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
i=0
while i < 13:
img_dst2 = cv2.GaussianBlur(img_dst, (11, 11), 1)
i = i + 1
scratch.py
#8近傍指定の行列を作成
element8 = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]], np.uint8)
#一回膨張処理
img_dst3 = cv2.dilate(img_dst2, element8, iterations = 1)
#5回収縮処理
i = 0
while i < 5:
img_dst3 = cv2.erode(img_dst3, element8, iterations = 1)
i = i + 1
#5回膨張処理
i=0
while i < 5:
img_dst3 = cv2.dilate(img_dst3, element8, iterations = 1)
i = i + 1
⑥2치화
scratch.pythresh = 60
ret, img_dst4 = cv2.threshold(img_dst3, thresh, 255, cv2.THRESH_BINARY)
#出力画像 = cv2.thresh(img_src, 閾値, 最大値、閾値処理の種類)
#処理の種類(THRESH_BINARY_INV、THRESH_TRUNC、THRESH_TOZERO、THRESH_TOZERO_INV)
⑦흑백 반전
img_dst5 = 255 - img_dst4
⑧면적 산출 패턴 1
흰색 부분의 픽셀을 계산하는 패턴
scratch.pycv2.countNonZero(img_dst5)
결과
9895
⑨면적 산출 패턴 2
윤곽을 감지하여 둘러싸인 부분의 면적을 모두 계산하여 (모든 영역의 레이블도 됨) 합계 또는 최대 부분의 면적을 반환하는 패턴
scratch.py#findContours(入力画像、輪郭抽出モード、輪郭の近似手法)
#輪郭抽出モード (RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE)
#輪郭の近似手法 (CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE)
contours = cv2.findContours(img_dst5, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
#算出された全部の面積の数字をリストに放り込んで最大値(max)、または合計(sum)を返す
area = []
for i in contours:
area.append(cv2.contourArea(i))
#sum(area)
max(area)
결과
9625.5
⑩ 면적 산출 패턴 2에서 검출한 윤곽을 오리지널의 판독 화상에 합성
면적의 산출 대상 영역이 올바른지 확인하고 싶었다.
scratch.pyanalyzed_img = cv2.drawContours(img_src, contours, -1, (0,255,0), 3)
마지막으로
스크래치된 에리어에 세포가 섬을 형성했을 때(인테리어 안에 둘러싸이게 되었을 때), 이번 면적 산출법으로는 대처할 수 없기 때문에, 무엇인가 대응해야 하는가라고 생각합니다. 이제 생각하는 것에 지쳤기 때문에 이 근처에서 끝납니다.
다음에 폴더에 들어간 모든 이미지를 처리하는 일괄 처리 코드를 작성합니다.
Reference
이 문제에 관하여(scratch assay1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/machamacha/items/3c6d02b2c97f82caec12
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
thresh = 60
ret, img_dst4 = cv2.threshold(img_dst3, thresh, 255, cv2.THRESH_BINARY)
#出力画像 = cv2.thresh(img_src, 閾値, 最大値、閾値処理の種類)
#処理の種類(THRESH_BINARY_INV、THRESH_TRUNC、THRESH_TOZERO、THRESH_TOZERO_INV)
img_dst5 = 255 - img_dst4
⑧면적 산출 패턴 1
흰색 부분의 픽셀을 계산하는 패턴
scratch.pycv2.countNonZero(img_dst5)
결과
9895
⑨면적 산출 패턴 2
윤곽을 감지하여 둘러싸인 부분의 면적을 모두 계산하여 (모든 영역의 레이블도 됨) 합계 또는 최대 부분의 면적을 반환하는 패턴
scratch.py#findContours(入力画像、輪郭抽出モード、輪郭の近似手法)
#輪郭抽出モード (RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE)
#輪郭の近似手法 (CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE)
contours = cv2.findContours(img_dst5, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
#算出された全部の面積の数字をリストに放り込んで最大値(max)、または合計(sum)を返す
area = []
for i in contours:
area.append(cv2.contourArea(i))
#sum(area)
max(area)
결과
9625.5
⑩ 면적 산출 패턴 2에서 검출한 윤곽을 오리지널의 판독 화상에 합성
면적의 산출 대상 영역이 올바른지 확인하고 싶었다.
scratch.pyanalyzed_img = cv2.drawContours(img_src, contours, -1, (0,255,0), 3)
마지막으로
스크래치된 에리어에 세포가 섬을 형성했을 때(인테리어 안에 둘러싸이게 되었을 때), 이번 면적 산출법으로는 대처할 수 없기 때문에, 무엇인가 대응해야 하는가라고 생각합니다. 이제 생각하는 것에 지쳤기 때문에 이 근처에서 끝납니다.
다음에 폴더에 들어간 모든 이미지를 처리하는 일괄 처리 코드를 작성합니다.
Reference
이 문제에 관하여(scratch assay1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/machamacha/items/3c6d02b2c97f82caec12
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
cv2.countNonZero(img_dst5)
9895
윤곽을 감지하여 둘러싸인 부분의 면적을 모두 계산하여 (모든 영역의 레이블도 됨) 합계 또는 최대 부분의 면적을 반환하는 패턴
scratch.py
#findContours(入力画像、輪郭抽出モード、輪郭の近似手法)
#輪郭抽出モード (RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE)
#輪郭の近似手法 (CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE)
contours = cv2.findContours(img_dst5, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]
#算出された全部の面積の数字をリストに放り込んで最大値(max)、または合計(sum)を返す
area = []
for i in contours:
area.append(cv2.contourArea(i))
#sum(area)
max(area)
결과
9625.5
⑩ 면적 산출 패턴 2에서 검출한 윤곽을 오리지널의 판독 화상에 합성
면적의 산출 대상 영역이 올바른지 확인하고 싶었다.
scratch.pyanalyzed_img = cv2.drawContours(img_src, contours, -1, (0,255,0), 3)
마지막으로
스크래치된 에리어에 세포가 섬을 형성했을 때(인테리어 안에 둘러싸이게 되었을 때), 이번 면적 산출법으로는 대처할 수 없기 때문에, 무엇인가 대응해야 하는가라고 생각합니다. 이제 생각하는 것에 지쳤기 때문에 이 근처에서 끝납니다.
다음에 폴더에 들어간 모든 이미지를 처리하는 일괄 처리 코드를 작성합니다.
Reference
이 문제에 관하여(scratch assay1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/machamacha/items/3c6d02b2c97f82caec12
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
analyzed_img = cv2.drawContours(img_src, contours, -1, (0,255,0), 3)
스크래치된 에리어에 세포가 섬을 형성했을 때(인테리어 안에 둘러싸이게 되었을 때), 이번 면적 산출법으로는 대처할 수 없기 때문에, 무엇인가 대응해야 하는가라고 생각합니다. 이제 생각하는 것에 지쳤기 때문에 이 근처에서 끝납니다.
다음에 폴더에 들어간 모든 이미지를 처리하는 일괄 처리 코드를 작성합니다.
Reference
이 문제에 관하여(scratch assay1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/machamacha/items/3c6d02b2c97f82caec12텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)