В Kivy появляется только черное окно, когда я пытался запустить простой код для открытия камеры - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в киви. Я пытался открыть камеру с помощью kivy, но у меня получилось только черное окно. Вот код

  import kivy 
  kivy.require('1.11.1') 

  from kivy import Config
  Config.set('graphics', 'multisamples', '0')
  from kivy.uix.relativelayout import RelativeLayout
  from kivy.uix.camera import Camera
  from kivy.app import App
  class MyCamera(App):
      def build(self):
          rela = RelativeLayout()
          camer = Camera(resolution=(320, 240), size=(1000, 800),pos=(0,0), play = True)
          rela.add_widget(camer)
          return rela
  if __name__=="__main__":
      MyCamera().run()`

[INFO   ] [Logger      ] Record log in C:\..\.kivy\logs\kivy_20-05-28_4.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.gstreamer" 0.1.18
[INFO   ] [deps        ] Successfully imported "kivy_deps.angle" 0.1.10
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.1.12
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.1.23
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "C:\tensorflowEn\lib\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "C:\tensorflowEn\Scripts\python.exe"
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer 
ignored)
[INFO   ] [Camera      ] Provider: opencv(['camera_picamera', 'camera_gi'] ignored)
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [Window      ] Activate GLES2/ANGLE context
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] Backend used <angle_sdl2>
[INFO   ] [GL          ] OpenGL version <b"OpenGL ES 2.0 (ANGLE 2.1.0.b'')">
[INFO   ] [GL          ] OpenGL vendor <b'Google Inc.'>
[INFO   ] [GL          ] OpenGL renderer <b'ANGLE (Intel(R) HD Graphics 3000 Direct3D11 vs_4_1 
ps_4_1)'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 0
[INFO   ] [GL          ] Shading version <b"OpenGL ES GLSL ES 1.00 (ANGLE 2.1.0.b'')">
[WARNING] [GL          ] BGRA texture support is not available

Я тоже пытался открыть его с помощью openCv, но появилось такое же черное окно. С другой стороны, если я использую

cv2.imshow("CV2 Image", frame)

, тогда новое окно openCv появится с правильной подачей камеры, и без изменений в окне kivy, оно все равно останется черным. Я хочу воспроизвести изображение с камеры в окне Киви. Не в другом всплывающем окне. пожалуйста, помогите мне .. Вот второй код с использованием openCV

import kivy 
kivy.require('1.11.1') 

from kivy import Config
Config.set('graphics', 'multisamples', '0')

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.clock import Clock
from kivy.graphics.texture import Texture

import cv2
import numpy as np
light_purp = (75, 50, 98)
dark_purp = (204, 153, 255)


class CamApp(App):
    def build(self):
        self.img1=Image()
        layout = BoxLayout()
        layout.add_widget(self.img1)
        self.capture = cv2.VideoCapture(0)
        cv2.namedWindow("CV2 Image")
        Clock.schedule_interval(self.update, 1.0/33.0)
        return layout

    def update(self, dt):
        ret, frame = self.capture.read()
        frame = cv2.flip(frame, 1)
        cv2.imshow("CV2 Image", frame)
        buf1 = cv2.flip(frame, 0)
        buf = buf1.tostring()
        texture1 = Texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt='bgr') 
        texture1.blit_buffer(buf, colorfmt='bgr', bufferfmt='ubyte')
        self.img1.texture = texture1

if __name__ == '__main__':
    CamApp().run()
    cv2.destroyAllWindows()
...