2017-12-03 25 views
0

이미지가 회색조 인 경우 길쌈 신경 네트워크 및 훈련을위한 이미지 처리에 대한 일반적인 질문이 있습니다.신경망 훈련을위한 그레이 스케일 이미지 재구성 - 올바르게 수행하는 방법

enter image description here

그것의 그레이 스케일 이미지를하지만

image = cv2.imread("image.jpg") 
print(image.shape) 

을 할 때 나는 그 OpenCV의 자동 생성 알고

(1024, 1024, 3) 

를 얻을 :

예를 들어 이미지를 가지고 jpg 이미지 용 3 개 채널. 그러나 네트워크 교육에 관해서는, 많은 MNIST 튜토리얼에서 보여 주듯이 (1024, 1024, 1)의 이미지를 사용할 수 있다면 계산 상 효율적 일 것입니다. 나는이 바꿀 경우 : 다음

image.reshape(1024, 1024 , 1) 

과 내가

raise TypeError("Invalid dimensions for image data") 

은 그 뜻 얻을

plt.axis("off") 
plt.imshow(reshaped_image) 
plt.show() 

이미지를 보여주기 위해 예를 들어 보는 것이 내 이미지를 네트워크 전에 이런 식으로 재편 교육이 잘못 되었습니까? 가능한 한 많은 정보를 이미지에 보관하고 싶지만 필요하지 않으면 여분의 채널을 갖고 싶지 않습니다.

답변

2

오류가 발생하는 이유는 reshape의 출력에 입력 요소 수가 동일하지 않기 때문입니다. reshape에 대한 문서에서 :

  • 엑스트라 요소는 새로운 매트릭스에 포함되지 않으며, 어떤 요소가 제외되지 않습니다. 결과적으로 제품 행 * cols * 채널()은 변형 후에 동일하게 유지되어야합니다. ++

    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
    

    또는 C : 파이썬에서

    :

대신, 1 채널 그레이 스케일 이미지로 3 채널 BGR 이미지를 변환 할 cvtColor를 사용

cv::cvtColor(image, image, cv::COLOR_BGR2GRAY); 

를 사용하여 이미지를 읽으면 전환을 완전히 피할 수도 있습니다. 1,223,플래그 :

image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) 
or 
image = cv2.imread(image_path, 0) 

(. 파이썬 코드 @Alexander Reynolds 덕분에)

+0

그리고 여기 완료는, 파이썬에서이'cv2.cvtColor (이미지, cv2.COLOR_BGR2GRAY) '일 것이다. 또한 OP는'cv2.imread (image_path, 0)'를 사용하여 이미지를 그레이 스케일로 읽을 수 있습니다. –

+0

@AlexanderReynolds 네, 맞아요. OP가 코드 스 니펫에서 파이썬을 사용하고 있다는 사실을 간과했습니다. 답변을 업데이트했습니다. 내가 어떤 것을 엉망으로 만든다면 편집 해주십시오. 감사! – beaker

+0

주의해야 할 또 하나의 사항.파이썬에서는 이미지가 numpy 배열로 저장되고 OpenCV'Mat's로 저장되지 않습니다. 이는'Mat' 메소드가 파이썬에 노출되어 있지 않다는 것을 의미하므로'img.reshape()'는'cv :: Mat' 메소드가 아니라 numpy 배열 메소드입니다. 여전히 언급 한 것과 같은 이유로 오류가 발생하지만이 방법은 동일한 작업을 수행하지만 연결된 문서는 관련이 없습니다. –