Я новичок в киви. Я пытался открыть камеру с помощью 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()