2017-04-08 7 views
0

임 지금은 바이너리의 img_b_blue 배열을 변환하고 최상위 비트를 얻을 필요가있다.파이썬에서 RGB 배열을 바이너리로 변환하고 가장 중요한 비트를 얻으려면 어떻게해야합니까? 이</p> <pre><code>img_b = misc.imread('google.png') img_b_blue = img_b[:, :, 0] img_b_blue = img_b_blue.ravel() </code></pre> <p>같은 RGB 배열을 이미지를 읽고 추출 scipy를 사용하여

내가지도를 사용하여 변환 할 수 있습니다

img_b_blue_bin = map(bin, img_b_blue) 

을하지만 형식은 '0b11110001'의 문자열로 제공됩니다. 지도를 사용하고 'b'없이 바이너리로 변환하는 방법은 무엇입니까? 그리고 어떻게하면 가장 중요한 비트를 얻을 수 있습니까?

+0

* 바이너리 * 란 무엇입니까? 가장 중요한 비트가 0 또는 1이기 때문에 내가 생각하는 부울 ... –

+0

정수는 이미 이진수로 저장되어 있습니다. 정수를 바이너리로 변환 할 필요가 없습니다.'0b11110001'은'241'을위한 유효한 파이썬이며, 정수에 직접 비트 연산을 적용 할 수 있습니다. –

답변

2

7 비트를 오른쪽 시프트하면 최상위 비트를 얻을 수 있습니다. 결과는 정수 배열입니다. 또한

img_b_blue_bin = img_b_blue >> 7 

, 사용 사례에 아마 분명, 128 높은 = 낮은, 흰색 = 검은 색과 비교한다. 결과는 부울 배열입니다.


img_b_blue_bin = img_b_blue >= 128 
마찬가지로 (x >> n) & 1을 이용하여 구할 수있다 번째 최하위 비트 (N + 1), 예를 들어 2 최상위 비트 :

img_b_blue_2nd_msb = (img_b_blue >> 6) & 1 

최하위 비트 :

img_b_blue_lsb = img_b_blue & 1 

이이 하나의 정수에 대해 어떻게 작동하는지에 대한 How am I getting a single bit from an int?를 참조하십시오.

+0

잘 했어. 나는'>> 7 '트릭을 게시하고 싶었지만, 당신이 옳다면'128'이 훨씬 더 명확합니다. –

+0

대단히 감사합니다. 오른쪽 시프트 7 비트가 문제를 해결하여 가장 중요한 비트를 얻었습니다. 다른 비트를 얻는 것은 어떨까요? 중간과 마지막 비트는 어떻게 얻을 수 있습니까? –

+0

@GustavoNunes 업데이트를 참조하십시오. – kennytm