Python (numpy, cv2)에서 이미지 데이터에 대한 픽셀 위치 조작 메모

3040 단어 cv2파이썬numpy

배경


  • github 등에있는 다른 사람의 python (numpy, cv2)에서 이미지 데이터를 처리하는 코드를 읽을 수 없습니다
  • [...,::-1] 심지어 기호적이기 때문에 검색하기가 어렵습니다

  • BGR -> RGB



    cv2는 표준으로 BGR 이미지로 처리하는 것 같습니다. 저장하거나 matplotlib로 표시 할 때 RGB로 정렬해야합니다.

    (H, W, C) 배열입니다.
    [:, :, ::-1]는 C 차원 (채널) 요소를 바꿉니다.
    :는 slice ((start, end, step))의 차원의 모든 요소를 ​​나타냅니다 (None, None, 1) (?) or (0, n-1, 1)에 해당합니다.
    ::-1도 슬라이스에서 (0, n-1, -1)에서 end에서 start로 역방향으로 하나씩 진행합니다.

    RGB (3 요소)의 경우 [2, 1, 0] 인덱싱입니다.

    따라서 BGR -> RGB로 정렬 할 수 있습니다.

    . . .


    img[...,::-1] 케이스.
    초보자는 너무 수수께끼를 전혀 모릅니다.
    ...는 검색 성이 낮고 어렵습니다.
    ... = :, :의 약어였습니다. 각 차원에서 모든 요소를 ​​선택한다고 생각합니까?
    [..., ::-1] = [:, :, ::-1] = [:, :, [2, 1, 0]]입니다.

    특정 채널에만 처리하고 싶습니다.



    예를 들어 G 채널 만 1을 설정하고 싶습니다.
    img[:, :, 1] = 1
    예.

    alpha를 RGB로 브로드 캐스트하고 싶습니다.



    numpy 만.

    rgb (3 채널) 및 alpha (1 채널) 이미지가있는 경우 단순히 rgb * alpha로 곱할 수 없습니다.

    alpha의 값을 RGB로 브로드 캐스트 (복제)해야합니다.
    fg * alpha[:, :, None]None를 지정하면 브로드 캐스트됩니다.

    None = np.newaxis 로서 차원을 하나 늘리는 행동이 되고 있습니다(알기 어렵다...)

    ast (구문 트리)를 제대로 고려하고있는 것 같고,
    bg * (1 - alpha[:, :, None]) 같은 방법으로 계산 한 다음 RGB와 곱셈을 잘 수행하십시오.

    화소 요소를 판정하고 대입하는 등


    for i in range(len(pixels)):
       pixels[i] = pixels[i] < 0.5 ? 0 : pixels[i]
    

    같은 작업을하고 싶습니다.
    pixels[pixels < 0.5] = 0
    

    그렇게하면 모든 픽셀로 처리됩니다.

    shape (이미지 크기 및 채널 수)가 있으면 다른 ndarray를 사용할 수 있습니다.

    e.g.
    alpha[trimap_np[:, :, 0] == 1] = 0
    

    alpha 이미지에서 trimap_np의 R 채널은 1의 픽셀 위치 값을 0으로 설정합니다.
    fg[alpha == 1] = image_np[alpha == 1]
    

    T.B.W.

    이미지를 부분 영역으로 나누기



    slice 기법에서는, step 로 4 픽셀마다 등을 지정할 수 있습니다만, 4 pixel 쭉이라고 하는 것은 할 수 없기 때문에, for 문등으로 slide (start, end, 1) 로 start, end 를 각각 지정하는지, numpy, cv2 당으로 부분 영역 로 분할하는 함수를 사용하십시오.
    (덧붙여서 numpy.tile는 이미지를 tile 형태로 반복하여 배열하는 함수이므로 분할에는 사용할 수 없습니다)

    기타



    시각적으로 설명해 주는 기사

    Numpy’s indexing and slicing notation explained visually
    htps : // 메이 m. 이 m/@부 ch.ぃ ぃ / n mpys- 어서 ぃ ん ぃ ん ぃ d ぃ し ん ー ー ー ー ー ー ー ー ぁ 이네 d

    좋은 웹페이지 즐겨찾기