저는 Python을 처음 접했고 현재 클래스의 가장자리 감지 프로그램에서 작업하고 있습니다 (구체적으로 거리 선을 감지하고 있음).np.array에서 JPG로 저장할 때 cv2.imwrite의 색이 바뀝니다.
이미지를 읽고 일부 가장자리를 감지합니다 (거친 곳을 통해). 검출 된 가장자리는 원본 이미지 위에 배치됩니다. 이 과정에서 이미지 데이터는 numpy.ndarry로 저장됩니다. 맨 마지막에 이미지를 디스크에 저장하고 싶습니다 (jpg로).
scipy.misc.imsave를 통해 디스크에 이미지를 쓰면 모든 것이 잘 동작합니다. cv2.imwrite를 통해 수행하면 색상이 일종의 열 화상으로 왜곡됩니다.
다른 색상 채널 및 필요한 크기 조정/변환에 대한 여러 주제를 읽었지만 numpy.ndarray에서 .jpg까지 해결책을 찾을 수 없습니다. .jpg는 8 비트 또는 16 비트 색상 채널 만 가질 수 있지만 어디에서 갈지는 모릅니다. 어쨌든 나는 맹목적으로 255 (-> 이미지 거의 검정)로 나누고 255 (-> 흰 열 화상 :-))로 곱하려고 노력했습니다.
아이디어가 있으십니까? 화상 (함수 나중에 루프라고 함) 독서
: 이들은 관련 코드 섹션있는 배열에 정의 된 모든 라인을 그리는 루프에서 호출되는
def read(img):
image = mpimg.imread(img)
return image
....
그리기 기능
def draw_lines(img, line_coordinates, color=[255, 0, 0], thickness=4):
for line in line_coordinates:
for x1,y1,x2,y2 in line:
cv2.line(img, (x1, y1), (x2, y2), color, thickness)
이 함수는 연신 함수를 호출하여 그려진 모든 라인 이미지를 반환
def depict_lines(img, array_of_coordinates):
line_img = np.zeros((img.shape[0], img.shape[1], 3), dtype=np.uint8)
draw_lines(line_img, array_of_coordinates)
return line_img
def weighted_img(line_img, initial_img, α=0.95, β=1., λ=0.):
return cv2.addWeighted(initial_img, α, line_img, β, λ)
combined_images = weighted_img(depicted_lines, original_image)
마지막으로, 나는 디스크에 이미지를 저장 : 414,다음, 나는 원래 이미지와 가장자리를 포함하는 하나의 결합. 이 기능은 잘 작동하는 반면
cv2.imwrite(new_file_name, combined_images)
:이 함수는 여기 이상한 색을 생성
scipy.misc.imsave('outfile.jpg', combined_images)
이 미처리 이미지 : natural colors
그리고 처리 된 하나 distorted colors
귀하의 도움을 주시면 감사하겠습니다!
생성 된 출력을 첨부 할 수 있습니까?내 직감에 따라, 디스크에 저장하려고하는 이미지의'RGB' 또는'BGR' 포맷에 약간의 문제가 있어야합니다. 'cv2.imwrite()'는 입력 이미지가'BGR' 포맷 인 것을 기대하지만,'scipy.misc.imsave'의 입력 포맷에 대해서는 확신이 없습니다. – ZdaR
@Marcel 작업중 인 이미지를 업로드 할 수 있습니까? –
안녕하세요, 전과 후의 이미지를 첨부했습니다! –