일부 의미있는 세그멘테이션 알고리즘과 함께 토치를 사용하여 분할 된 이미지의 바이너리 마스크를 생성합니다. 그 마스크를 기반으로 이미지를 자르고 싶습니다. 분명히하려면 픽셀 단위로 잘라야합니다. 그것은 간단한 문제처럼 보일 수 있지만 유일한 해결책은 Coco API에서와 같이 draw mask
함수를 반전하거나 배열의 각 픽셀을 반복하고 마스크가 필요없는 경우 검정색으로 설정하는 것입니다. 이렇게하는 더 좋은 방법이있는 것처럼 느껴집니다. Lua, Python, Go 또는 C++의 라이브러리가 저에게 효과적입니다. 어떤 아이디어?바이너리 마스크를 기반으로 이미지 자르기 방법
답변
입력 된 이미지와 마스크를 매트 오브젝트로 사용할 수 있다고 가정하고 파이썬에서 구현했습니다. 감안할 때 그 SRC1은 이미지와 src1_mask은 이진 마스크입니다 :
src1_mask=cv2.cvtColor(src1_mask,cv2.COLOR_GRAY2BGR)#change mask to a 3 channel image
mask_out=cv2.subtract(src1_mask,src1)
mask_out=cv2.subtract(src1_mask,mask_out)
지금 mask_out 정의한 바이너리 마스크 안에있는 이미지 SRC1의 일부가 포함되어 있습니다.
opencv의 boundingRect
기능을 사용하여 원하는 직사각형을 검색 할 수 있으며 이미지를 해당 직사각형으로자를 수 있습니다. 파이썬 구현은 다음과 같이 보일 것입니다 :
import numpy as np
import cv2
mask = np.zeros([600,600], dtype=np.uint8)
mask[200:500,200:500] = 255 # set some values to 255 to represent an actual mask
rect = cv2.boundingRect(mask) # function that computes the rectangle of interest
print(rect)
img = np.ones([600,600, 3], dtype=np.uint8) # arbitrary image
cropped_img = img[rect[0]:(rect[0]+rect[2]), rect[1]:(rect[1]+rect[3])] # crop the image to the desired rectangle
대체 mask
에게 img
를 자신의
불행히도 픽셀 당 자르기 솔루션이 필요합니다. – patrickbarker
와이에 실행 다른 사람을 위해. 토치 바이너리 마스크 텐서를 Double
유형으로 변환 한 다음 행렬의 cmul
함수를 사용하여 RGB 채널 각각에 대해 간단히 곱하면됩니다. 기본적으로 바이너리 마스크는 세그먼트 화 된 픽셀 대신에 1
을 가지므로 값은 그대로 유지됩니다. 분할 영역 외부에있는 경우 0
이 있으며 채널을 가로 지르면 검정색이됩니다. Saransh의 대답은 또한 좋으며 개방 된 cv에서도 잘 작동합니다. 마스크 옵션
사용 OpenCV의 .copyTo
http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html#mat-copyto
- 1. 이미지 마스크를 가리 키는 방법
- 2. 큰 이미지 자르기 방법
- 3. J2ME에서 이미지 자르기 방법
- 4. android에서 이미지 자르기 방법
- 5. DICOM 이미지 자르기 방법
- 6. iPhone에서 이미지 자르기 방법
- 7. 배경 이미지 자르기 방법
- 8. 이미지 자르기 방법?
- 9. 자르기 이미지 - 최선의 방법
- 10. Matlab의 바이너리 마스크를 기반으로 레이블이 지정된 ROI에 이미지 처리 알고리즘을 적용하는 방법은 무엇입니까?
- 11. 자르기 수동으로 이미지 자르기
- 12. 자르기 플래시 웹캠 이미지
- 13. matlab에 : 바이너리 이미지
- 14. 슬라이스 배열 선택 마스크를 기반으로
- 15. 자동 자르기 이미지
- 16. 사용자 지정 UIBezierPath로 이미지 자르기
- 17. 이미지 자르기
- 18. 이미지 자르기 및 끝내기 방법
- 19. iPhone : ios5에서 이미지 자르기 방법
- 20. 아이폰에서 특정 이미지 자르기 방법
- 21. 원하는 모양으로 이미지 자르기 방법
- 22. Blackberry에서 URL에서 이미지 자르기 방법
- 23. android에서 opencv로 이미지 자르기 방법
- 24. Monotouch Xamarin에서 이미지 자르기 방법
- 25. long long의 바이너리 마스크를 반복하는 방법은 무엇입니까?
- 26. opencv python의 마스크를 기반으로 이미지 구성 요소를 제거하는 방법은 무엇입니까?
- 27. 이미지 AVCaptureSession 이미지 자르기
- 28. 이미지 자르기 도구 (Python)
- 29. 동적 이미지 자르기 (PHP)
- 30. 맞춤 자르기가있는 이미지 자르기
사용 findContours 또는 (수동) 모든 마스크 포인트를 추출하고 minBoundingRect 기능을 사용합니다. 그런 다음 자른 이미지를 얻으려면 하위 이미지를 사용하십시오. – Micka