Connect clicked event of Button in PySide

import sys
import os

from PySide2.QtWidgets import QApplication, QWidget, QPushButton
from PySide2.QtCore import QFile
from PySide2.QtUiTools import QUiLoader


class main(QWidget):
    def __init__(self):
        super(main, self).__init__()
        self.load_ui()

    def load_ui(self):
        loader = QUiLoader()
        path = os.path.join(os.path.dirname(__file__), "form.ui")
        ui_file = QFile(path)
        ui_file.open(QFile.ReadOnly)
        self.window:QWidget = loader.load(ui_file, self)
        ui_file.close()

        # pushButton is the name of button control
        self.pushButton:QPushButton = self.window.findChild(QPushButton,"pushButton")
        self.pushButton.clicked.connect(self.clicked)

    def clicked(self):
        print("Hello")


if __name__ == "__main__":
    app = QApplication([])
    widget = main()
    widget.show()
    sys.exit(app.exec_())

References
https://www.blog.pythonlibrary.org/2018/05/30/loading-ui-files-in-qt-for-python/

Load ui file in PySide2

import sys
import os


from PySide2.QtWidgets import QApplication, QWidget
from PySide2.QtCore import QFile
from PySide2.QtUiTools import QUiLoader


class main(QWidget):
    def __init__(self):
        super(main, self).__init__()
        self.load_ui()

    def load_ui(self):
        loader = QUiLoader()
        path = os.path.join(os.path.dirname(__file__), "form.ui")
        ui_file = QFile(path)
        ui_file.open(QFile.ReadOnly)
        loader.load(ui_file, self)
        ui_file.close()

if __name__ == "__main__":
    app = QApplication([])
    widget = main()
    widget.show()
    sys.exit(app.exec_())

 

Convert m2ts to mp4, mp4 to webm, mp4 to ogv using ffmpeg

MP4 TO MP4 (MEDIUM)
ffmpeg -i input.mp4 -b 1000000 output.mp4

M2TS TO MP4
ffmpeg -i input.m2ts -vcodec libx264 -crf 20 -acodec ac3 -vf "yadif" output.mp4

MP4 TO WEBM (HIGH)
ffmpeg -i input.mp4 -aq 5 -ac 2 -qmax 25 -threads 2 output.webm

MP4 TO WEBM (MEDIUM)
ffmpeg -i input.mp4 -aq 5 -ac 2 -qmax 35 -threads 2 output.webm

MP4 TO OGV (HIGH)
ffmpeg -i input.mp4 -vcodec libtheora -acodec libvorbis -q:v 6 -q:a 5 output.ogv

MP4 TO OGV (MEDIUM)
ffmpeg -i input.mp4 -vcodec libtheora -acodec libvorbis -q:v 2 -q:a 4 output.ogv

References
https://gist.github.com/vielhuber/cf918eed2b5cc9eaa63f

Pytesseract OCR multiple config options

<span class="typ">Page</span><span class="pln"> segmentation modes</span><span class="pun">:</span>
  <span class="lit">0</span>    <span class="typ">Orientation</span> <span class="kwd">and</span><span class="pln"> script detection </span><span class="pun">(</span><span class="pln">OSD</span><span class="pun">)</span><span class="pln"> only</span><span class="pun">.</span>
  <span class="lit">1</span>    <span class="typ">Automatic</span><span class="pln"> page segmentation </span><span class="kwd">with</span><span class="pln"> OSD</span><span class="pun">.</span>
  <span class="lit">2</span>    <span class="typ">Automatic</span><span class="pln"> page segmentation</span><span class="pun">,</span><span class="pln"> but no OSD</span><span class="pun">,</span> <span class="kwd">or</span><span class="pln"> OCR</span><span class="pun">.</span>
  <span class="lit">3</span>    <span class="typ">Fully</span><span class="pln"> automatic page segmentation</span><span class="pun">,</span><span class="pln"> but no OSD</span><span class="pun">.</span> <span class="pun">(</span><span class="typ">Default</span><span class="pun">)</span>
  <span class="lit">4</span>    <span class="typ">Assume</span><span class="pln"> a single column of text of variable sizes</span><span class="pun">.</span>
  <span class="lit">5</span>    <span class="typ">Assume</span><span class="pln"> a single uniform block of vertically aligned text</span><span class="pun">.</span>
  <span class="lit">6</span>    <span class="typ">Assume</span><span class="pln"> a single uniform block of text</span><span class="pun">.</span>
  <span class="lit">7</span>    <span class="typ">Treat</span><span class="pln"> the image </span><span class="kwd">as</span><span class="pln"> a single text line</span><span class="pun">.</span>
  <span class="lit">8</span>    <span class="typ">Treat</span><span class="pln"> the image </span><span class="kwd">as</span><span class="pln"> a single word</span><span class="pun">.</span>
  <span class="lit">9</span>    <span class="typ">Treat</span><span class="pln"> the image </span><span class="kwd">as</span><span class="pln"> a single word </span><span class="kwd">in</span><span class="pln"> a circle</span><span class="pun">.</span>
 <span class="lit">10</span>    <span class="typ">Treat</span><span class="pln"> the image </span><span class="kwd">as</span><span class="pln"> a single character</span><span class="pun">.</span>
 <span class="lit">11</span>    <span class="typ">Sparse</span><span class="pln"> text</span><span class="pun">.</span> <span class="typ">Find</span> <span class="kwd">as</span><span class="pln"> much text </span><span class="kwd">as</span><span class="pln"> possible </span><span class="kwd">in</span><span class="pln"> no particular order</span><span class="pun">.</span>
 <span class="lit">12</span>    <span class="typ">Sparse</span><span class="pln"> text </span><span class="kwd">with</span><span class="pln"> OSD</span><span class="pun">.</span>
 <span class="lit">13</span>    <span class="typ">Raw</span><span class="pln"> line</span><span class="pun">.</span> <span class="typ">Treat</span><span class="pln"> the image </span><span class="kwd">as</span><span class="pln"> a single text line</span><span class="pun">,</span><span class="pln">
                        bypassing hacks that are </span><span class="typ">Tesseract</span><span class="pun">-</span><span class="pln">specific</span><span class="pun">.</span>

References
https://stackoverflow.com/questions/44619077/pytesseract-ocr-multiple-config-options

Pytesseract not working sometimes on perfectly clear Images

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

image = cv2.imread('2.jpg',0)
thresh = cv2.threshold(image, 150, 255, cv2.THRESH_BINARY_INV)[1]

result = cv2.GaussianBlur(thresh, (5,5), 0)
result = 255 - result

data = pytesseract.image_to_string(result, lang='eng',config='--psm 6')
print(data)

cv2.imshow('thresh', thresh)
cv2.imshow('result', result)
cv2.waitKey()

We use the --psm 6 config flag since we want to treat the image as a single uniform block of text.

References
https://stackoverflow.com/questions/57719983/pytesseract-not-working-sometimes-on-perfectly-clear-images
https://stackoverflow.com/questions/44619077/pytesseract-ocr-multiple-config-options