目前正在尝试使用GUI编写代码,该GUI允许切换图像处理。理想情况下,代码将允许打开/关闭窗口视图、实时图像处理(相当基本)和控制外部板。在

我遇到的问题围绕着cv2.imshow()函数。几个月前,我通过从picamera切换到{}来提高处理速度,在这里我可以执行更复杂的计算,比如背景减法,而不必一直调用python。使用bcm2835-v4l2包,我可以使用cv2直接从picamera中提取图像。在

快进6个月,当我试图更新代码时,我发现函数cv2.imshow()不再正确显示。我认为bcm2835-v4l2可能有问题,但使用matplotlib进行的测试表明连接良好。它似乎与cv2.imshow()有关,我想大概是这样。在

实际上,我使用threading模块创建了一个单独的线程,我想知道这是否是罪魁祸首。我不这么认为,因为输入命令import cv2

camera = cv2.VideoCapture(0)

grabbed,frame = camera.read()

cv2.imshow(frame)

产生同样的黑幕

下面是我正在使用的代码(在RPi3上),一些图片显示了错误和预期结果。在

作为参考,这里是关于我的系统的细节

^{pr2}$

代码import cv2

from threading import Thread

import time

import numpy as np

from tkinter import Button, Label, mainloop, Tk, RIGHT

class GPIOControllersystem:

def __init__(self,OutPinOne=22, OutPinTwo=27,Objsize=30,src=0):

self.Objectsize = Objsize

# Build GUI controller

self.TK = Tk() # Place TK GUI class into self

# Variables

self.STSP = 0

self.ShutdownVar = 0

self.Abut = []

self.Bbut = []

self.Cbut = []

self.Dbut = []

# setup pi camera for aquisition

self.resolution = (640,480)

self.framerate = 60

# Video capture parameters

(w,h) = self.resolution

self.bytesPerFrame = w * h

self.Camera = cv2.VideoCapture(src)

self.fgbg = cv2.createBackgroundSubtractorMOG2()

def Testpins(self):

while True:

grabbed,frame = self.Camera.read()

frame = self.fgbg.apply(frame)

if self.ShutdownVar ==1:

break

if self.STSP == 1:

pic1, pic2 = map(np.copy,(frame,frame))

pic1[pic1 > 126] = 255

pic2[pic2 <250] = 0

frame = pic1

elif self.STSP ==1:

time.sleep(1)

cv2.imshow("Window",frame)

cv2.destroyAllWindows()

def MProcessing(self):

Thread(target=self.Testpins,args=()).start()

return self

def BuildGUI(self):

self.Abut = Button(self.TK,text = "Start/Stop System",command = self.CallbackSTSP)

self.Bbut = Button(self.TK,text = "Change Pump Speed",command = self.CallbackShutdown)

self.Cbut = Button(self.TK,text = "Shutdown System",command = self.callbackPumpSpeed)

self.Dbut = Button(self.TK,text = "Start System",command = self.MProcessing)

self.Abut.pack(padx=5,pady=10,side=RIGHT)

self.Bbut.pack(padx=5,pady=10,side=RIGHT)

self.Cbut.pack(padx=5,pady=10,side=RIGHT)

self.Dbut.pack(padx=5,pady=10,side=RIGHT)

Label(self.TK, text="Controller").pack(padx=5, pady=10, side=RIGHT)

mainloop()

def CallbackSTSP(self):

if self.STSP == 1:

self.STSP = 0

print("stop")

elif self.STSP == 0:

self.STSP = 1

print("start")

def CallbackShutdown(self):

self.ShutdownVar = 1

def callbackPumpSpeed(self):

pass

if __name__ == "__main__":

GPIOControllersystem().BuildGUI()

使用matplotlib.pyplot.imshow(),我可以看到raspberry pi相机和opencv之间的连接是通过bcm2835-v4l2连接工作的。

但是当使用打开cv.imshow()窗口显示黑匣子,不显示任何内容。

更新:所以在测试时,我发现当我执行以下任务时import cv2

import matplotlib

camera = cv2.VideoCapture(0)

grab,frame = camera.read()

matplotlib.pyplot.imshow(frame)

grab,frame = camera.read()

matplotlib.pyplot.imshow(frame)

更新已解决,与主要问题无关。这是一个缓冲问题。似乎与cv2.imshow()没有关联

python打开摄像头黑屏怎么办_python、cv2.imshow()、raspberryPi和黑屏相关推荐

  1. python图色检测_利用python打开摄像头及颜色检测方法

    最近两周由于忙于个人项目,一直未发言了,实在是太荒凉了....,上周由于项目,见到Python的应用极为广泛,用起来也特别顺手,于是小编也开始着手学习Python,-下面我就汇报下今天的学习成果吧 小 ...

  2. python打开摄像头获取图片_Python基于opencv调用摄像头获取个人图片的实现方法

    接触图像领域的应该对于opencv都不会感到陌生,这个应该算是功能十分强劲的一个算法库了,当然了,使用起来也是很方便的,之前使用Windows7的时候出现多该库难以安装成功的情况,现在这个问题就不存在 ...

  3. python调用摄像头人脸识别代码_Python使用 opencv调用笔记本摄像头进行人脸识别...

    首先需要导入opencv库pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple/   opencv-python 上代码#万码学堂Pytho ...

  4. termux python 打开摄像头_玩转科技-python远程调用并开启摄像头

    本节分享一个利用python的第三库来远程调用并开启摄像头,是一个完整的案例,希望对大家有收获 以上就是小编分享的内容了,利用python控制电脑摄像头,python果然是很强大的 这主要是通过ope ...

  5. python打开文件写文件乱码_Python读写文件乱码问题

    对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...

  6. python打开摄像头

    import cv2 camera = cv2.VideoCapture(0) cv2.namedWindow('MyCamera') while True:     success, frame = ...

  7. python打开摄像头黑屏怎么办_python识别视频黑屏或者低清晰度

    第一步:获取视频第一帧图片 第二步:进行识别 import os import numpy as np import cv2 as cv from skimage import filters, io ...

  8. python打开摄像头黑屏怎么办_临时解决pygame启动时黑屏问题

    直接上代码: import pygame import sys pygame.init() screen = pygame.display.set_mode((10,10),0) screen = p ...

  9. python打开摄像头_Python 调用摄像头

    环境搭建 使用方法 Device() 调用一个设备 saveSnapshot() 拍下照片 举例-拍一张照片 from VideoCapture import Device cam = Device( ...

  10. python 打开本地程序发生异常_Python中的异常处理

    Python中的异常事件: 当Python遇到无法正常处理的事件时,便是异常发生的时候,Python将异常也当作一个对象,尽管他是出错的.当发生异常时候我们要捕获他,否则程序就会中断运行. Pytho ...

最新文章

  1. LeetCode实战:螺旋矩阵 II
  2. 五年之后,你的企业是拥抱AI,还是已被淘汰
  3. 耕耘数据,融合发展——2018年度数据科学研究院RONG教授座谈会成功举办
  4. 介绍一款比Android原生模拟器还要快的模拟器Genymotion(转)
  5. jsp超链接中怎么跳转页面跳转_JSP页面跳转方法小结
  6. 美国法官驳回特朗普工作签禁令:超出权职范围
  7. 计算同比 环比_PowerBI学习教程(三)时间累积同比环比计算
  8. 强化学习5——价值函数近似(VFA)
  9. ie的严苛,firefox的宽容
  10. 面试官:项目中常用的 .env 文件原理是什么?如何实现?
  11. 针对媒体不实报道误导大众--抹黑C#工资垫底
  12. PHP笔记-用户登录权限拦截说明
  13. 福利:appium+selenium+python 模拟手工点击趣头条(app赚钱软件)
  14. 基于STM32的频率计Proteus仿真教程
  15. Dart | Dart 语言基础知识梳理
  16. Mockplus默认图标导出的方法
  17. cpu字长、操作系统字长和jvm中各数据类型占用的字节数关系
  18. 一个完整的搜索系统 - God bless you - 博客园
  19. 《第一行代码》学习笔记——第1章 开始启程,你的第一行Android代码
  20. Chrome 再次优化内存占用,新增内存释放开关

热门文章

  1. AutoCAD VBA二次开发地形图多边形裁剪
  2. 五、完成Teigha.net对CAD文件中的Entity实体进行编辑修改功能,包括字体,样式,颜色,备注XData等属性
  3. 数字证书和SSL的学习
  4. 文章详情页面评论功能添加及实现原理
  5. Gmail邮箱允许异地登录/客户端登录
  6. 西方文化系列讲座之希腊文化(下)
  7. 对冲策略及Python实现
  8. 期货反向对冲核心思维跟单策略
  9. 孝当先健康管理品牌连锁项目说明会-南昌站圆满结束
  10. mrc mcr 与 bic orr 含义及用法示例