создал и отредактировал изображение с подушкой, выдает ошибку «атрибут доступа» - PullRequest
0 голосов
/ 26 июня 2019

Итак, я пытаюсь создать изображение, залить его цветами и затем отобразить для отладки.Я создал изображение с подушкой, установил его на черный или, (0,0,0) в rgb, перебираю и заполняю изображение реальным цветом и т. Д. Но затем я получаю ошибку для какого-то атрибута, который я надеваюНе знаю, как заполнить в Python.

import cv2
import tkinter as tk
import copy
from PIL import Image
from tkinter import filedialog


colorwheel = Image.new('RGB', (1, 255*7), color='black')
     colorwheel = colorwheel.load()
     colorwheel[0,1]=(255,255,0)
     colorwheel[0,2] = (255, 255, 0)
     r=255
     g=255
     b=0
     #keep value of green, add take away red
     for i in range( 255):
          colorwheel[0, i] = (255-1, 255, 0)


     #go to blue take away green
     for i in range( 255):
          colorwheel[0,255*2 + i] = (0, 255-i,0+1)

     #go to purple 128 keep blue, add red to 128
     for i in range (255):
          colorwheel[0, 255*3 + i] = (int(i/2), 0, 255)

     #go to red
     for i in range( 255):
          colorwheel[0,255*4 + i]=(int(i/2),0,255-i)

     #go to orange
     for i in range(255):
          colorwheel[0, 255 * 5 + i] = (128, int(i / 2), 0) #keep red 128


     for i in range(255):
          colorwheel[0, 255 * 6 + i] =(128,int(128+i/2),0)



     colorwheel.resize((50,255*7))
     cv2.imshow('image', colorwheel)

Он должен иметь все необходимое для изменения размера и отображения изображения, но я получаю это.

File "C:/Users/misterE/PycharmProjects/frame2cc/base contraster", line 64, in <module>
    colorwheel.resize((50,255*7))
AttributeError: 'PixelAccess' object has no attribute 'resize'

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Попробуйте: -

import cv2
import tkinter as tk
import copy
from PIL import Image
from tkinter import filedialog


colorwheel1 = Image.new('RGB', (1, 255*7), color='black')
colorwheel = colorwheel1.load()
colorwheel[0,1]=(255,255,0)
colorwheel[0,2] = (255, 255, 0)
r=255
g=255
b=0
#keep value of green, add take away red
for i in range( 255):
     colorwheel[0, i] = (255-1, 255, 0)

 #go to blue take away green
for i in range( 255):
     colorwheel[0,255*2 + i] = (0, 255-i,0+1)

 #go to purple 128 keep blue, add red to 128
for i in range (255):
     colorwheel[0, 255*3 + i] = (int(i/2), 0, 255)

#go to red
for i in range( 255):
     colorwheel[0,255*4 + i]=(int(i/2),0,255-i)

#go to orange
for i in range(255):
     colorwheel[0, 255 * 5 + i] = (128, int(i / 2), 0) #keep red 128


for i in range(255):
     colorwheel[0, 255 * 6 + i] =(128,int(128+i/2),0)



colorwheel1.resize((50,255*7))
colorwheel1.show()

ИЗОБРАЖЕНИЕ ВЫХОДА: -

Причиной вашей ошибки было то, что вы пытались использовать Image объектную команду (Image.resize()) для элемента PixelAccess. Который вызвал эту ошибку. Для исправления этого мы просто изменили имя исходного объекта Image на colorwheel1, чтобы мы могли в дальнейшем использовать этот объект для изменения размера.

P.S .: - В конце я использовал Image.show() для отображения изображения, а не cv2.imshow().

0 голосов
/ 26 июня 2019

Похоже, что PixelAccess не имеет функции resize(), согласно Документам на подушку .

Если вы хотите изменить размер изображения, этот пост об изменении размера изображения с помощью PIL может быть полезен!

...