RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-307405

bluesky's questions

Martin Hope
bluesky
Asked: 2023-09-16 23:24:17 +0000 UTC

如何在 PyQt 中从相机获取图像数组?

  • 6

任务是从网络摄像头接收一系列图像,对其进行过滤,选择一种颜色(例如,仅绿色)并将其显示在窗口中。

使用OpenCV很容易做到这一点,但是使用PyQt5时有两个问题:

  1. 如何获取图像数组?
  2. 如何在窗口中显示修改后的图像?

所提供的代码显示来自网络摄像头的原始图像:

import sys        
from PyQt5.Qt import *


class MyWidget(QWidget):
    def __init__(self, parent):            
        super(QWidget, self).__init__(parent)

        self.layout = QVBoxLayout(self)            
        self.viewfinder = QCameraViewfinder()
        self.cameraInfo = QCameraInfo.defaultCamera()            
        self.camera = QCamera(self.cameraInfo)
        self.camera.setViewfinder(self.viewfinder)
        self.camera.setCaptureMode(QCamera.CaptureStillImage)
        self.layout.insertWidget(1, self.viewfinder)
        if self.camera.status() != QCamera.UnavailableStatus:
            self.camera.start()  
                        

class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.widget1 = MyWidget(self)
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        main_layout = QVBoxLayout(self.central_widget)
        main_layout.addWidget(self.widget1)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName("pyqt5")
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

更新:上面介绍了使用OpenCV
在图像中显示绿色的代码。

需要在PyQt5窗口中显示相同的图像。

    import cv2
    import numpy as np


    # Границы зеленого цвета в формате 'HLS'
    hls_min = np.array((30, 0, 0), np.uint8)
    hls_max = np.array((100, 255, 255), np.uint8)    
    cap = cv2.VideoCapture(0)
    while True:
        # Трёхмерный массив оригинального изображения в формате 'BGR'
        ret, frame = cap.read()
        # Перевод из 'bgr' в 'hls' (нужно именно в 'HLS')
        hls = cv2.cvtColor(frame, cv2.COLOR_BGR2HLS) # Трёхмерный массив изображения в формате 'HLS'
        # Фильтр
        img_mask = cv2.inRange(hls, hls_min, hls_max)
        # Применение фильтра цвета
        img_filt = cv2.bitwise_and(frame, frame, mask = img_mask)
        a=cv2.waitKey(1)
        a=cv2.imshow("Filtered image", img_filt)
python
  • 1 个回答
  • 55 Views
Martin Hope
bluesky
Asked: 2023-09-16 07:15:48 +0000 UTC

PyQt5 中的相机拍摄

  • 6

启动程序时需要保存来自网络摄像头的两张图片,但仅保存第一张图片。

import sys        
from PyQt5.Qt import *


class MyWidget(QWidget):
    def __init__(self, parent):            
        super(QWidget, self).__init__(parent)
        self.layout = QVBoxLayout(self)            
        self.viewfinder = QCameraViewfinder()
        self.cameraInfo = QCameraInfo.defaultCamera()            
        self.camera = QCamera(self.cameraInfo)
        self.camera.setViewfinder(self.viewfinder)
        self.camera.setCaptureMode(QCamera.CaptureStillImage)
        self.layout.insertWidget(1, self.viewfinder)
        if self.camera.status() != QCamera.UnavailableStatus:
            self.camera.start() 
            self.capture = QCameraImageCapture(self.camera)
        # Сохранение снимков
        for i in range(2):                                
            self.capture.capture('C:/pyqt_' + str(i) + '.jpg')


class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.widget1 = MyWidget(self)
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        main_layout = QVBoxLayout(self.central_widget)
        main_layout.addWidget(self.widget1)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName("pyqt5")
    window = MainWindow()
    window.show()
    sys.exit(app.exec())
python
  • 1 个回答
  • 30 Views
Martin Hope
bluesky
Asked: 2023-09-04 07:14:15 +0000 UTC

在 PyQt5 中显示带布局和不带布局的小部件

  • 5

在一个窗口的“tab1”选项卡上,应显示来自网络摄像头的视频图像和图表,按下按钮时会更新该图表。窗口的大小、小部件以及窗口上的位置必须是固定的。我设法将图形和视频图像放置在“QHBoxLayout()”上。但是,当固定放置在“MyWidget”类中的“tab1”选项卡上(设置小部件的位置和大小时),而不是“MainWindow”上时,它们不会显示。我为什么要这样做 - 最后,我的图表应该从表格中获取值,并在我单击表格单元格时进行更新,并且这已经在“MyWidget”类中实现了。 1 个带有“QHBoxLayout()”的布局选项(工作):

import numpy as np
import sys    
from PyQt5.Qt import *    
import random    
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
class MyWidget(QWidget):
    def __init__(self, parent):
        global kolichestvo_tochek
        global y
        super(QWidget, self).__init__(parent)    
        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.layout_1 = QHBoxLayout()                
        self.tab1.setLayout(self.layout_1)
        self.tabs.addTab(self.tab1, 'tab1')
        # График
        self.figure = Figure()
        self.canvas = FigureCanvas(self.figure)
        self.ax = self.figure.add_subplot(111)
        self.layout_1.addWidget(self.canvas)            
        self.update()
        self.layout = QVBoxLayout(self)
        self.layout.addWidget(self.tabs)
        self.sc = MplCanvas(self, width=5, height=4, dpi=100)
        # Камера
        self.viewfinder = QCameraViewfinder()
        self.cameraInfo = QCameraInfo.defaultCamera()
        self.camera = QCamera(self.cameraInfo)
        self.camera.setViewfinder(self.viewfinder)    
        self.layout_1.insertWidget(0, self.viewfinder)
        if self.camera.status() != QCamera.UnavailableStatus:
            self.camera.start()
    # Реакция на нажатие Enter на нампаде! клавиатуры
    def keyPressEvent(self, e):
        k = e.key()
        if k == 16777221:
            super().keyPressEvent(e)
            self.update()        
    def update(self):                        
        global y
        self.ax.clear()
        x = np.arange(1, 6)
        y = np.random.randint(1, 10, size=5)
        self.ax.plot(x, y)            
        self.canvas.draw()    
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)            
        self.resize(1500, 470)
        self.widget1 = MyWidget(self)                        
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        main_layout = QVBoxLayout(self.central_widget)
        main_layout.addWidget(self.widget1)
class MplCanvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
        super(MplCanvas, self).__init__(fig)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName("WebCam")
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

2 没有“布局”的选项(不起作用):

import numpy as np
import sys    
from PyQt5.Qt import *    
import random
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
class MyWidget(QWidget):
    def __init__(self, parent):
        global kolichestvo_tochek
        global y
        super(QWidget, self).__init__(parent)    
        self.tabs = QTabWidget()
        self.tab1 = QWidget(self)
        # График
        self.figure = Figure()
        self.canvas = FigureCanvas(self.figure)
        self.ax = self.figure.add_subplot(111)    
        self.update()
        self.layout = QVBoxLayout(self)
        self.sc = MplCanvas(self, width=5, height=4, dpi=100)
        # Камера
        self.viewfinder = QCameraViewfinder()
        self.cameraInfo = QCameraInfo.defaultCamera()
        self.camera = QCamera(self.cameraInfo)
        self.camera.setViewfinder(self.viewfinder)
        if self.camera.status() != QCamera.UnavailableStatus:
            self.camera.start()    
    # Реакция на нажатие Enter на нампаде! клавиатуры
    def keyPressEvent(self, e):
        k = e.key()
        if k == 16777221:
            super().keyPressEvent(e)
            self.update()        
    def update(self):                        
        global y
        self.ax.clear()
        x = np.arange(1, 6)
        y = np.random.randint(1, 10, size=5)
        self.ax.plot(x, y)            
        self.canvas.draw()
class MainWindow(QMainWindow):        
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)            
        self.resize(1500, 470)            
        self.widget1 = MyWidget(self)                        
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        central_widget = QTabWidget()            
        central_widget.addTab(self.widget1, "tab1")
        self.setCentralWidget(central_widget)
        
class MplCanvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
        super(MplCanvas, self).__init__(fig)        
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName("WebCam")
    window = MainWindow()
    window.show()
    sys.exit(app.exec())
python
  • 1 个回答
  • 27 Views
Martin Hope
bluesky
Asked: 2023-09-03 09:13:34 +0000 UTC

在 QTableWidget 中按 Enter 键

  • 5

在单元格中输入值并按键盘上的某个键后,Enter终端中应出现一个条目:“按下 Enter”。

事实上,记录仅在第二次按下按钮后出现,并且不是每次,而是每隔一次。

我不知道如何在第一次点击后显示消息。

import sys    
from PyQt5.Qt import *        
class MyWidget(QWidget):
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
            # Компоновка
        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.layout_vert_0 = QVBoxLayout()                    
        self.layout_1 = QHBoxLayout()
        self.tab1.setLayout(self.layout_vert_0)
        self.layout_vert_0.addLayout(self.layout_1)
        self.tabs.addTab(self.tab1, "PyQt5")                
        self.tableWidget = QTableWidget()            
        self.tableWidget.setRowCount(1)
        self.tableWidget.setColumnCount(1)        
        self.layout_1.addWidget(self.tableWidget)
        row = self.tableWidget.currentRow
        column = self.tableWidget.currentColumn            
        self.layout = QVBoxLayout(self)
        self.layout.addWidget(self.tabs)        
    # Реагирование на нажатие 'Enter'        
    def keyPressEvent(self, e):
        k = e.key()
        print('нажата какая-то кнопка')
        if k == 16777221:
            super().keyPressEvent(e)                                
            print("!!!!! нажат Enter")
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)            
        self.widget1 = MyWidget(self)                        
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        main_layout = QVBoxLayout(self.central_widget)
        main_layout.addWidget(self.widget1)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName("pyqt5")
    window = MainWindow()
    window.show()
    sys.exit(app.exec())
python
  • 1 个回答
  • 21 Views
Martin Hope
bluesky
Asked: 2023-08-27 16:30:11 +0000 UTC

显示QTableWidget的单元格值

  • 6

在PyQt5中,我按数字顺序记下表格单元格QTableWidget的大小,并尝试在终端中显示它。 但只显示第一个单元格的值:和。2 х 101
00

错误在哪里?

import sys
from PyQt5.Qt import *    


class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.tableWidget = QTableWidget()            
        self.tableWidget.setRowCount(2)
        self.tableWidget.setColumnCount(1)

        # Задание значений ячеек                                    
        for i in range(2):
            self.tableWidget.setItem(i,0, QTableWidgetItem(str(i)))

        # Вывод значений ячеек в терминал
        for i in range(2):
            print(self.tableWidget.itemAt(i, 0).text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName("PyQt5")
    window = MainWindow()
    sys.exit(app.exec())
python
  • 1 个回答
  • 9 Views
Martin Hope
bluesky
Asked: 2023-08-25 21:59:04 +0000 UTC

PyQt5按钮无法正常工作

  • 7

当按下按钮时,必须显示单元格的值。

主要.py:

import sys
from PyQt5.Qt import *


class MyWidget(QWidget):
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
            # Таблица
        self.tableWidget = QTableWidget()
        self.tableWidget.setRowCount(1)
        self.tableWidget.setColumnCount(1)            
        self.tableWidget.setItem(0,0, QTableWidgetItem("Cell (1,1)"))                    
            # Инициализацтя экрана вкладок
        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab1.layout_1   = QHBoxLayout(self.tab1)
            # Добавление таблицы на вкладку 1
        self.tab1.layout_1.addWidget(self.tableWidget)
            # Кнопка печати
        self.pushButton_print = QPushButton("Печать")
        self.tab1.layout_1.layout_1_1 = QVBoxLayout(self.tab1)                
            # Добавление вкладки
        self.tabs.addTab(self.tab1, "tab_1")            
            # Добавляем кнопку на вкладку            
        self.tab1.layout_1.addWidget(self.pushButton_print)
        self.layout = QVBoxLayout(self)
        self.layout.addWidget(self.tabs)
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
            # Размещаем виджеты
        self.widget1 = MyWidget(self)            
        self.widget1.pushButton_print.clicked.connect(self.on_click_print) 

        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)                
    
        main_layout = QVBoxLayout(self.central_widget)
        main_layout.addWidget(self.widget1)
        
    def on_click_print(self):                            
        print("Печать")            
        print(MyWidget.tableWidget.itemAt(0, 0).text())

    def clear(self):
        self.tableWidget.clear()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName("PyQt5")
    window = MainWindow()
    window.show()
    sys.exit(app.exec())
python
  • 1 个回答
  • 18 Views
Martin Hope
bluesky
Asked: 2023-08-20 17:02:54 +0000 UTC

将小部件放置在 PyQt5 窗口中

  • 6

该窗口应该有两个选项卡。
每个选项卡都有一个按钮。
在第一个选项卡上,按钮旁边,应显示来自网络摄像头的视频,
但视频窗口显示在单独的窗口上,并且不会广播视频。

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtMultimedia import *
from PyQt5.QtMultimediaWidgets import *

import os
import sys

class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.setGeometry(100, 100, 1500, 700)
        self.available_cameras = QCameraInfo.availableCameras()
        if not self.available_cameras:            
            sys.exit()
        self.status = QStatusBar()
        self.setStatusBar(self.status)            
        self.viewfinder = QCameraViewfinder()
        self.viewfinder.show()

        self.online_webcams = QCameraInfo.availableCameras()
        if not self.online_webcams:
            pass
        self.exist = QCameraViewfinder()
        self.exist.show()
        self.setCentralWidget(self.exist)
    
        # Вебкамера по умолчанию
        Camera.get_webcam(self, i=0)        

        # Размещаем виджеты
        self.widget1  = MyTableWidget(self)
        self.widget2  = Camera(self)
    
        main_layout = QVBoxLayout()
        main_layout.addWidget(self.widget1)
        main_layout.addWidget(self.widget2)        
        central_widget = QWidget()
        central_widget.setLayout(main_layout)
        self.setCentralWidget(central_widget)
        self.show()

class Camera(QWidget):
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
    
    def get_webcam(self, i):
        self.my_webcam = QCamera(self.online_webcams[i])
        self.my_webcam.setViewfinder(self.exist)
        self.my_webcam.setCaptureMode(QCamera.CaptureStillImage)
        self.my_webcam.error.connect(lambda: self.alert(self.my_webcam.errorString()))
        self.my_webcam.start()

        def alert(self, s):
            """
            Ошибки
            """
            err = QErrorMessage(self)
            err.showMessage(s)

class MyTableWidget(QWidget):
    def __init__(self, parent):

        super(QWidget, self).__init__(parent)
        self.layout_1 = QVBoxLayout(self)
        self.layout_2 = QVBoxLayout(self)
    
        # Инициализируем экран вкладок
        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tabs.resize(300,200)
    
        # Добавляем вкладки
        self.tabs.addTab(self.tab1,"Вкладка 1")
        self.tabs.addTab(self.tab2,"Вкладка 2")
    
        # Создаем вкладки
        self.tab1.layout_1 = QVBoxLayout(self)
        self.tab2.layout_2 = QVBoxLayout(self)

        # Создаем кнопки
        self.pushButton1 = QPushButton("Кнопка 1")
        self.pushButton2 = QPushButton("Кнопка 2")
    
        # Действие при нажатии на кнопку
        self.pushButton1.clicked.connect(self.on_click_1)
        self.pushButton2.clicked.connect(self.on_click_2)

        # Добавляем кнопку на вкладку № 1
        self.tab1.layout_1.addWidget(self.pushButton1)        
        self.tab1.setLayout(self.tab1.layout_1)

        # Добавляем кнопку на вкладку № 2
        self.tab2.layout_2.addWidget(self.pushButton2)
        self.tab2.setLayout(self.tab2.layout_2)
    
        # Добавляем вкладки
        self.layout_1.addWidget(self.tabs)
        self.setLayout(self.layout_1)

        self.layout_2.addWidget(self.tabs)
        self.setLayout(self.layout_2)
    
        # Функция по нажатию кнопки
        def on_click_1(self):
            print("Нажата кнопка 1")

        def on_click_2(self):
            print("Нажата кнопка 2")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName("WebCam")
    window = MainWindow()
    app.exec_()
python
  • 1 个回答
  • 32 Views
Martin Hope
bluesky
Asked: 2022-07-13 14:01:25 +0000 UTC

不经过循环的 Python 函数

  • 0

我正在制作一个脚本,当按下鼠标按钮时,文本 1 应该显示 2 秒。文本出现 2 秒后,应该出现文本 2。无限循环,一切正常。是否有可能在不经历对 Raspberry Zero 处理器施加压力的循环的情况下实现相同的结果。

import pynput
import time
from pynput import mouse    
t = time.time()
tst = 'not'
# Бесконечный цикл
for i in range(10000):
    # Функция отслеживания нажатия мыши
    def on_click(x, y, button, press):
        global tst
        global t        
        tst = 'test'            
        t = time.time()
    listener_mouse = mouse.Listener(on_click = on_click)
    listener_mouse.start()
    # Функция вывода текста            
    def start_stop():
        global t        
        if time.time() - t < 2:
            print('start', tst)
        else:
            print('__stop__', tst)
    if __name__ == '__main__':
        start_stop()
python
  • 1 个回答
  • 45 Views
Martin Hope
bluesky
Asked: 2022-09-04 09:25:46 +0000 UTC

如何粘合 Numpy 数组

  • 1

我有一个 640x480 的原始图像。我从中提取了向量 R、G、B。然后我需要将其粘回去以恢复形状为 (480,640,3) 的图像。我得到了形状(3,480,640):

# Исходные вектора
r = np.arange(480*640)
g = np.arange(480*640)
b = np.arange(480*640)

    # Попытка 1
r_2 = r.reshape(480, 640)
g_2 = g.reshape(480, 640)
b_2 = b.reshape(480, 640)
img = np.hstack([r_2, g_2, b_2])
img = np.array(np.hsplit(img, 3))

    # Попытка 2
img = np.column_stack((r, g, b))
img = frame.reshape(480*640, 3)
img = np.array(np.vsplit(img, 480))     
img = np.uint8(img)
cv2.imshow("img" , img) # Наблюдаю три изображения в окне
python numpy
  • 1 个回答
  • 39 Views
Martin Hope
bluesky
Asked: 2022-09-01 12:51:05 +0000 UTC

在 Python 中安装 Cupy 时出错

  • 0

重新安装 Windows 10、Microsoft Visual C++ 和 CUDA 11.6 后,我安装了 Python 3.10 库。要安装 Cupy,我使用以下命令pip install cupy-cuda116:pip install cupy和pip install cupy-10.5.0+cuda116-cp310-cp310-win_amd64.whl. 一个错误:

Collecting cupy-cuda116
Using cached cupy_cuda116-10.6.0-cp310-cp310-win_amd64.whl (62.4 MB)
Requirement already satisfied: numpy<1.25,>=1.18 in c:\python310\lib\site-packages (from cupy-cuda116) (1.22.4+mkl)
Collecting fastrlock>=0.5
  Using cached fastrlock-0.8.tar.gz (68 kB)
  Preparing metadata (setup.py) ... done
Using legacy 'setup.py install' for fastrlock, since package 'wheel' is not installed.
Installing collected packages: fastrlock, cupy-cuda116
  Running setup.py install for fastrlock ... error
  error: subprocess-exited-with-error

  × Running setup.py install for fastrlock did not run successfully.
  │ exit code: 1
  ╰─> [16 lines of output]
      building without Cython
      running install
      C:\Python310\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
        warnings.warn(
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-cpython-310
      creating build\lib.win-amd64-cpython-310\fastrlock
      copying fastrlock\__init__.py -> build\lib.win-amd64-cpython-310\fastrlock
      copying fastrlock\rlock.pxd -> build\lib.win-amd64-cpython-310\fastrlock
      copying fastrlock\__init__.pxd -> build\lib.win-amd64-cpython-310\fastrlock
      copying fastrlock\_lock.pxi -> build\lib.win-amd64-cpython-310\fastrlock
      running build_ext
      building 'fastrlock.rlock' extension
      error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> fastrlock

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.
python
  • 1 个回答
  • 25 Views
Martin Hope
bluesky
Asked: 2022-07-14 10:58:39 +0000 UTC

Numpy 向量的相同元素

  • 0

每个向量中有两个不重复值的不同长度的向量。您需要同时获取两个向量中存在的值

a = np.array((1, 2, 5))
b = np.array((2, 3, 5, 10, 20))

正确结果:

array([2, 5])
python
  • 2 个回答
  • 67 Views
Martin Hope
bluesky
Asked: 2022-07-14 07:21:01 +0000 UTC

如何索引numpy向量的元素

  • 0

如何在一个表达式中快速(例如,元素个数为10**9)选择向量'a'中值大于'a_min',小于'a_max'的元素,但不显示带有数字“idx”的元素。例如

a = np.arange(20)
a_min = 5
a_max = 15
idx = [6, 7, 9, 12]
res_ind = np.where((a > a_min) & (a < a_max) & (a != a[idx]))

第三个条件 'a != a[idx]' 不正确。

python
  • 1 个回答
  • 17 Views
Martin Hope
bluesky
Asked: 2022-09-08 21:42:17 +0000 UTC

如何通过 Python 管理 USB

  • 0

有必要使用 Pyusb Python 库在不使用微控制器的情况下通过 USB 电缆每秒交替打开和关闭 1 次电磁铁。是否有可能做到这一点?PS 这个想法是电磁铁是由来自 USB 的电压触发的。该图显示了我要重复的电路在此处输入图像描述

python
  • 1 个回答
  • 10 Views
Martin Hope
bluesky
Asked: 2022-03-19 21:27:19 +0000 UTC

如何使用 GPUtil Python 输出 GPU 温度

  • 0

以下代码以表格形式显示显卡设置,包括温度。如何将 GPU 温度值显示为单独的数字?我在文档中没有找到任何东西。

import GPUtil
GPUtil.showUtilization(all=True)
python
  • 1 个回答
  • 10 Views
Martin Hope
bluesky
Asked: 2022-03-18 07:45:30 +0000 UTC

如何在 Python 中找出显卡的温度

  • 0

哪个库可用于在 Python 中找出显卡的温度?显卡 - NVidia 1080 Windows 10

python
  • 1 个回答
  • 10 Views
Martin Hope
bluesky
Asked: 2022-06-06 20:06:40 +0000 UTC

检测交叉点时如何在 Ursina Python 中使用 Numpy

  • 0

在 Ursina,我寻找十字路口。一切都在循环中进行。我正在尝试使用 Numpy 摆脱循环,但 Ursina 对数组发誓。如何使用 Numpy 的功能而不使用循环?

from ursina import *
import numpy as np
app = Ursina()
cube_1 = Entity(model='cube', collider='box')
cube_2 = Entity(model='cube', collider='box')
cube_3 = Entity(model='cube', collider='box')
lst = []
lst.append(cube_2)
lst.append(cube_3)

for m in range(2):
    if cube_1.intersects(lst[m]).hit:
        print('intersects 1')

arr = np.asarray(lst)
np.where(cube_1.intersects(arr).hit == True)
python
  • 1 个回答
  • 10 Views
Martin Hope
bluesky
Asked: 2022-04-25 23:05:24 +0000 UTC

如何合并 NumPy 数组

  • 0

有一个分辨率为 (220, 220) 的图像,即 三个 RGB 层的数组 (220, 220, 3)。如何在不干扰图像顺序的情况下向该数组添加四层(假设为零)。据我了解,应该获得一个大小为 (220, 220, 7) 的数组,还是我弄错了

import numpy as np
a = np.arange(220 * 220 * 3).reshape(220 * 220, 3)
a = np.array(np.vsplit(a, 220))

b = np.zeros(220 * 220 * 4).reshape(220 * 220, 4)
b = np.array(np.vsplit(b, 220))

c = np.vstack((a, b))
python
  • 1 个回答
  • 10 Views
Martin Hope
bluesky
Asked: 2022-04-11 08:04:47 +0000 UTC

如何组合两个 PyQt5 代码

  • 3

开始学习PyQt。看了很多关于PyQt和OOP的教程。对于简单的情况,逻辑或多或少是清楚的。但是当涉及到从更简单的元素构建更复杂的代码时,代码在OOP中的结构并不完全清楚。

目标是构建一个窗口,上面有两个Layout(左和右)。窗口的左半部分应显示一个表格,其中包含从 csv 文件加载的数据。在窗口的右半部分,有一个根据这些表格数据构建的图表。

有两个工人代码分别执行这些任务中的每一个。

告诉我如何将两个代码合二为一,或者至少应该是什么代码结构。

代码открытия/записи csv-файла:

import sys
import os
import csv
from PyQt5.QtWidgets import QTableWidget, QApplication, QMainWindow, QTableWidgetItem, QFileDialog
from PyQt5.QtWidgets import qApp, QAction

class MyTable(QTableWidget):
    def __init__(self, r, c):
        super().__init__(r, c)
        self.check_change = True
        self.init_ui()

    def init_ui(self):
        self.cellChanged.connect(self.c_current)
        self.show()

    def c_current(self):
        if self.check_change:
            row = self.currentRow()
            col = self.currentColumn()
            value = self.item(row, col)
            value = value.text()
            print("The current cell is ", row, ", ", col)
            print("In this cell we have: ", value)

    def open_sheet(self):
        self.check_change = False
        path = QFileDialog.getOpenFileName(self, 'Open CSV', os.getenv('HOME'), 'CSV(*.csv)')
        if path[0] != '':
            with open(path[0]) as csv_file:
                self.setRowCount(0)
                self.setColumnCount(2)
                my_file = csv.reader(csv_file, dialect='excel')
                for row_data in my_file:
                    row = self.rowCount()
                    self.insertRow(row)
                    if len(row_data) > 2:
                        self.setColumnCount(len(row_data))
                    for column, stuff in enumerate(row_data):
                        item = QTableWidgetItem(stuff)
                        self.setItem(row, column, item)
        self.check_change = True

    def save_sheet(self):
        path = QFileDialog.getSaveFileName(self, 'Save CSV', os.getenv('HOME'), 'CSV(*.csv)')
        if path[0] != '':
            with open(path[0], 'w', newline='') as csv_file:
                writer = csv.writer(csv_file, dialect='excel')
                for row in range(self.rowCount()):
                    row_data = []
                    for column in range(self.columnCount()):
                        item = self.item(row, column)
                        if item is not None:
                            row_data.append(item.text())
                        else:
                            row_data.append('')
                    writer.writerow(row_data)

class Sheet(QMainWindow):
    def __init__(self):
        super().__init__()

        self.form_widget = MyTable(10, 2)
        self.setCentralWidget(self.form_widget)
        col_headers = ['x', 'y']
        self.form_widget.setHorizontalHeaderLabels(col_headers)

        # Set up menu
        bar = self.menuBar()
        file = bar.addMenu('Файл')

        save_action = QAction('&Сохранить', self)
        save_action.setShortcut('Ctrl+S')
        open_action = QAction('&Открыть', self)
        quit_action = QAction('&Выйти', self)

        file.addAction(save_action)
        file.addAction(open_action)
        file.addAction(quit_action)

        quit_action.triggered.connect(self.quit_app)
        save_action.triggered.connect(self.form_widget.save_sheet)
        open_action.triggered.connect(self.form_widget.open_sheet)
        self.setGeometry(700, 300, 300, 500)
        self.show()

    def quit_app(self):
        qApp.quit()

app = QApplication(sys.argv)
sheet = Sheet()
sys.exit(app.exec_())

代码для вывода графика Matplotlib:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QVBoxLayout, QSizePolicy, QMessageBox, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

class App(QMainWindow):

    def __init__(self):
        super().__init__()
        self.left = 600
        self.top = 300
        self.title = 'График'
        self.width = 640
        self.height = 400
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        m = PlotCanvas(self, width=5, height=4)
        m.move(0,0)

        button = QPushButton('Кнопка', self)
        button.setToolTip('Подсказка')
        button.move(500,0)
        button.resize(100,20)

        self.show()

class PlotCanvas(FigureCanvas):

    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        FigureCanvas.__init__(self, fig)
        self.setParent(parent)

        FigureCanvas.setSizePolicy(self,
                QSizePolicy.Expanding,
                QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)
        self.plot()

    def plot(self):
        x = [0,1,2,3,4,5,6,7,8,9,10]
        y = [0,1,2,3,4,5,6,7,8,9,10]
        ax = self.figure.add_subplot(111)
        ax.plot(x, y, 'r-')
        ax.set_title('График')
        self.draw()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
python
  • 1 个回答
  • 10 Views
Martin Hope
bluesky
Asked: 2022-03-27 06:14:20 +0000 UTC

如何完成侧面带有黑条的图像python

  • 0

我正在尝试在图像的两侧添加黑色条纹。对于单调的颜色,结果是:

import numpy as np
import cv2
    
# Задание изображения 640 х 480
width = 640
height = 480
img = np.array(np.vsplit(np.zeros(height*width*3).reshape(width*height,3),height))

# Задание зеленого цвета изображения
img[:,:,1] = 255

# Формирование черной полосы шириной 100 для добавления слева и справа изображения
width_nul = 100
nul = np.zeros(width_nul*height*3).reshape((width_nul*height,3))
nul = np.array(np.vsplit(nul, height))

# Добавление черных полос слева и справа
img = np.hstack((nul, img))
img = np.hstack((img, nul))
a = cv2.imshow("img", img)

但是,当我尝试为任何“img.jpg”照片添加条纹时,会显示一个白色方块:

import numpy as np
import cv2
    
# Чтение изображения 640 х 480
img = cv2.imread('img.jpg')

# Формирование черной полосы для добавления слева и справа изображения
width_nul = 100
height = 480
nul = np.zeros(width_nul*height*3).reshape((width_nul*height,3))
nul = np.array(np.vsplit(nul, height))

# Добавление черных полос слева и справа
img = np.hstack((nul, img))
img = np.hstack((img, nul))
a = cv2.imshow("img", img)
python
  • 1 个回答
  • 10 Views
Martin Hope
bluesky
Asked: 2022-03-03 04:54:07 +0000 UTC

如何在python中更改数字的数据类型

  • 0

数字类型 1/3 是“浮点数”。如何将数字从一种类型转换为另一种类型(float16、float32、float64)?

python
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5