2017-12-06 2 views
1

openCV를 사용하여 python으로 이미지를 만들려고합니다. 나는리스트의리스트를 만들고, 각리스트는 0부터 255까지 16 개의 숫자를 가진다 (16리스트). 그런 다음 큰 목록을 멍청한 ndarray로 변환하고 cv2.imwrite()를 사용하여이를 이미지에 쓰려고합니다. 이것은 내 코드입니다.Python-OpenCV cv2 OpenCV 오류 : 어설 션이 실패했습니다.

import cv2 
import numpy as np 

colours = [] 
numbers = [] 
a=0 
for i in range(256): 
    numbers.append(a) 
    a+=1 

for x in range(16): 
    new_list = [numbers[16*x:16*x+16]] 
    colours.append(new_list) 

col = np.asarray(colours) 
new_image = cv2.imwrite("rainbow.png",col) 

마지막 줄까지 잘 돌아갑니다. 그것은 내가 부족하지만 여기 유사한 오류 질문을 찾을 수 없어하는 매우 분명 뭔가를 할 수 있도록 내가 초보자이야 일반적으로

OpenCV Error: Assertion failed (image.channels() == 1 || image.channels() == 3 || image.channels() == 4) in cv::imwrite_, file C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp, line 600 
Traceback (most recent call last): 
    File "kormou.py", line 16, in <module> 
    new_image = cv2.imwrite("rainbow.png",col) 
cv2.error: C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:600: error: (-215) image.channels() == 1 || image.channels() == 3 || image.channels() == 4 in function cv::imwrite_ 

: 그 다음 날이 오류를 제공합니다.

+0

imwrite 함수에서 "image.channels() == 1 image.channels() == 3 image.channels() == 4"라는 어설 션이 실패했습니다. 이미지에 몇 개의 채널이 있습니까? –

+0

16 채널 "이미지"를 ['imwrite'] (https://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html#imwrite)로 보내고 있습니다. 워드 프로세서는 1,3 또는 4 개의 채널 만 지원합니다. 또한 이미지를 반환하지는 않지만 부울을 반환하므로 'new_image'라는 변수 이름이 오해의 소지가 있습니다. –

답변

0

아주 작은 실수가 있습니다. 다음 작업 코드를 확인하십시오. -

import cv2 
import numpy as np 

colours = [] 
numbers = [] 
a=0 
for i in range(256): 
    numbers.append(a) 
    a+=1 

for x in range(16): 
    new_list = numbers[16*x:16*x+16] 
    colours.append(new_list) 

print colours 
col = np.asarray(colours) 
new_image_flag = cv2.imwrite("rain.png",col) 

힌트 편집을 확인하십시오.

관련 문제