import cv2
import sys
# Ініціалізація змінної для визначення джерела відео
s = 0
# Перевірка чи передані аргументи командного рядка
if len(sys.argv) > 1:
s = sys.argv[1] # Використання першого аргументу як шляху до файлу або ідентифікатора камери
# Створення об'єкта VideoCapture для захоплення відео з камери або відтворення файлу
source = cv2.VideoCapture(s)
# Назва вікна, яке буде відображати відео
win_name = 'Camera Preview'
# Створення вікна для відображення відео з можливістю зміни розміру
cv2.namedWindow(win_name, cv2.WINDOW_NORMAL)
# Головний цикл для читання кадрів і відображення їх у вікні
while cv2.waitKey(1) != 27: # Чекати 1 мс і перервати цикл, якщо натиснуто Escape (27)
has_frame, frame = source.read() # Зчитування кадру
if not has_frame: # Якщо кадри закінчились, перервати цикл
break
cv2.imshow(win_name, frame) # Відображення кадру у вікні
# Звільнення ресурсів та закриття вікон
source.release()
cv2.destroyWindow(win_name)
суботу, 13 квітня 2024 р.
Доступ до камери
вівторок, 19 вересня 2023 р.
Вилучення метаданих із pdf файлу
Метадані в PDF файлах можуть містити інформацію про автора, дату створення, програмне забезпечення, яке було використано для створення файлу, та інші деталі. Інколи може виникнути необхідність видалити або змінити ці метадані.
У цьому дописі ми розглянемо, як використовувати бібліотеку PyPDF2 для вилучення метаданих із PDF файлу.
Встановлення бібліотеки
Для початку потрібно встановити бібліотеку PyPDF2:
pip install PyPDF2
Вилучення метаданих
Ось приклад коду для вилучення метаданих із PDF файлу:
import PyPDF2
def remove_metadata(pdf_path, output_path):
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
# Створення нового PDF-файлу
writer = PyPDF2.PdfWriter()
# Копіювання всіх сторінок
for page_num in range(len(reader.pages)):
page = reader.pages[page_num]
writer.add_page(page)
# Вилучення метаданих
writer.add_metadata({
'/Producer': '',
'/Creator': '',
'/CreationDate': '',
'/ModDate': '',
'/Author': ''
})
with open(output_path, 'wb') as output_file:
writer.write(output_file)
Після запуску цього коду метадані у вихідному PDF-файлі будуть видалені.
Приклад використання
Для вилучення метаданих із вашого PDF файлу, ви можете використати нашу функцію таким чином:
# Приклад використання
remove_metadata('your_input_file.pdf', 'output_without_metadata.pdf')
Де 'your_input_file.pdf'
- це шлях до вашого вхідного файлу, а 'output_without_metadata.pdf'
- шлях, за яким буде збережено новий PDF файл без метаданих.
Зміна метаданих PDF файлу
Якщо ви бажаєте змінити деякі метадані, а не видаляти їх повністю, ви можете використати наступну функцію:
def modify_metadata(input_file, output_file, new_metadata):
# Відкриваємо вхідний файл
with open(input_file, 'rb') as file:
reader = PyPDF2.PdfReader(file)
# Створюємо новий PDF файл
writer = PyPDF2.PdfWriter()
# Додаємо сторінки з вхідного файлу
for page in reader.pages:
writer.add_page(page)
# Змінюємо метадані
writer.add_metadata(new_metadata)
# Зберігаємо новий PDF файл
with open(output_file, 'wb') as output:
writer.write(output)
Приклад використання
Для зміни метаданих вашого PDF файлу:
new_data = {
'/Title': 'Новий заголовок',
'/Author': 'Новий автор',
'/Subject': 'Нова тема',
# ... (інші метадані для зміни) ...
}
# Приклад використання
modify_metadata('your_input_file.pdf', 'output_with_modified_metadata.pdf', new_data)
Де 'your_input_file.pdf'
- це шлях до вашого вхідного файлу, 'output_with_modified_metadata.pdf'
- шлях, за яким буде збережено новий PDF файл із зміненими метаданими, а new_data
- словник з новими метаданими.
вівторок, 8 серпня 2023 р.
Конвертація TeX-Файлу з Формулами в DOCX за допомогою Pandoc
Конвертація TeX-Файлу з Формулами в DOCX за допомогою Pandoc
TeX є потужним інструментом для створення складних документів, особливо коли йдеться про математичні формули. Але інколи може виникнути потреба конвертувати TeX-файл в формат DOCX. В цьому пості ми розглянемо, як це зробити за допомогою Pandoc.
Встановлення Pandoc
Спершу вам потрібно встановити Pandoc. Це можна зробити за допомогою наступної команди:
pip install pandoc
Конвертація TeX-Файлу в DOCX
За допомогою Pandoc ви можете конвертувати TeX-файл в DOCX за допомогою такої команди:
pandoc myfile.tex -o myfile.docx
де myfile.tex
- це ім'я вашого TeX-файлу, а myfile.docx
- ім'я вихідного DOCX-файлу.
Збереження Формул
Pandoc автоматично зберігає більшість формул при конвертації з TeX в DOCX. Проте, деякі специфічні формули можуть потребувати додаткового налаштування або редагування вручну.
Заключення
Конвертація TeX-файлу в DOCX може бути здійснена за допомогою Pandoc з лише кількома командами. Це забезпечує гнучкий спосіб перетворення ваших наукових і математичних документів в загальноприйнятий формат, який можна легко відкрити та редагувати в багатьох текстових редакторах.
Автоматизація Конвертації за допомогою Bat-Файлу
Якщо вам потрібно конвертувати багато TeX-файлів, ви можете автоматизувати цей процес за допомогою bat-файлу. Ось як це зробити:
- Створіть новий текстовий файл з розширенням
.bat
, наприклад,convert.bat
. - Відкрийте файл в текстовому редакторі та додайте наступний рядок:
- Збережіть і закрийте файл.
- Тепер ви можете перетягнути ваш TeX-файл на цей bat-файл або запустити його з командного рядка, передавши ім'я TeX-файлу без розширення як аргумент, наприклад:
pandoc %1.tex -o %1.docx
convert myfile
Цей bat-файл використовує Pandoc для конвертації вказаного TeX-файлу в DOCX. Ви можете легко конвертувати кілька файлів, перетягуючи їх на bat-файл або запускаючи його з командного рядка для кожного файлу окремо.
Об'єднання кількох docx файлів в один файл
Вступ
Об'єднання кількох DOCX-файлів в один файл може бути корисним у різних ситуаціях, особливо при створенні звітів, конспектів та інших документів. У цьому пості я поясню, як можна об'єднати кілька DOCX-файлів в один за допомогою мови програмування Python та бібліотеки python-docx.
Підготовка
Перш ніж почати, вам потрібно встановити бібліотеку python-docx. Ви можете зробити це за допомогою наступної команди:
pip install python-docx
Об'єднання DOCX-файлів
Тепер ми можемо написати код для об'єднання DOCX-файлів. Ось основні кроки:
- Імпортування необхідних бібліотек:
- Створення нового об'єкта документа:
- Об'єднання кожного файлу: Ітеруйте через кожен файл, який потрібно об'єднати, та додайте його вміст до об'єднаного документа.
- Збереження об'єднаного документа:
from docx import Document
merged_document = Document()
files = ['file1.docx', 'file2.docx', 'file3.docx']
for file_name in files:
sub_doc = Document(file_name)
for element in sub_doc.element.body:
merged_document.element.body.append(element)
merged_document.save('merged.docx')
За допомогою цього підходу можна легко об'єднати кілька DOCX-файлів в один. Це може бути корисно для автоматизації робочих процесів та збільшення продуктивності.
Об'єднання DOCX-файлів з Малюнками
Об'єднання DOCX-файлів з малюнками вимагає додаткового кроку, оскільки малюнки мають бути коректно впорядковані у новому документі. Ми можемо використовувати бібліотеку docxcompose для цього завдання.
Встановлення docxcompose
Спершу вам потрібно встановити бібліотеку docxcompose:
pip install docxcompose
Код для об'єднання DOCX-файлів з малюнками
Тепер ми можемо використовувати docxcompose для об'єднання файлів з малюнками. Ось приклад коду:
from docxcompose.composer import Composer
from docx import Document
merged_document = Document()
composer = Composer(merged_document)
files = ['file1.docx', 'file2.docx', 'file3.docx']
for file_name in files:
sub_doc = Document(file_name)
composer.append(sub_doc)
composer.save('merged_with_images.docx')
Цей код зчитує кожен файл зі списку файлів та об'єднує їх в один документ, зберігаючи всі малюнки.
Об'єднання DOCX-файлів з малюнками може бути трохи складнішим, але з правильними інструментами це все одно досить просто. За допомогою бібліотеки docxcompose ми можемо зберегти всі малюнки та інші елементи форматування при об'єднанні файлів.
СhatCPT4.5
середу, 2 серпня 2023 р.
Візуалізація фільтрів згорткових шарів
Згорткові нейронні мережі (CNN) використовуються для багатьох завдань машинного навчання, особливо для обробки зображень. Одним з ключових елементів CNN є згорткові шари, які використовують набори ваг (або фільтрів) для сканування вхідного зображення та виявлення різних характеристик, таких як краї, текстури та кольори.
Ми можемо візуалізувати ці фільтри, щоб отримати краще уявлення про те, як CNN "бачить" зображення. В цьому пості ми покажемо, як це зробити за допомогою TensorFlow і Keras.
Спочатку, давайте навчимо модель класифікації на наборі MNIST:
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
mnist = tf.keras.datasets.mnist.load_data()
(X_train_full, y_train_full), (X_test, y_test) = mnist
X_train_full = X_train_full / 255.
X_test = X_test / 255.
X_train, X_valid = X_train_full[:-5000], X_train_full[-5000:]
y_train, y_valid = y_train_full[:-5000], y_train_full[-5000:]
X_train = X_train[..., np.newaxis]
X_valid = X_valid[..., np.newaxis]
X_test = X_test[..., np.newaxis]
model= tf.keras.Sequential([
tf.keras.layers.Conv2D(32, kernel_size=13, padding="same",
activation="relu", kernel_initializer="he_normal"),
tf.keras.layers.Conv2D(64, kernel_size=9, padding="same",
activation="relu", kernel_initializer="he_normal"),
tf.keras.layers.MaxPool2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dropout(0.25),
tf.keras.layers.Dense(128, activation="relu",
kernel_initializer="he_normal"),
tf.keras.layers.Dropout(0.5),
tf.keras.layers.Dense(10, activation="softmax")
])
model.compile(loss="sparse_categorical_crossentropy", optimizer="nadam",
metrics=["accuracy"])
model.fit(X_train, y_train, epochs=4, validation_data=(X_valid, y_valid))
model.evaluate(X_test, y_test)
Після тренування моделі ми можемо отримати ваги першого згорткового шару:
filters, biases = model.layers[0].get_weights()
Це дає нам масив фільтрів, які можна візуалізувати за допомогою Matplotlib:
fig, ax = plt.subplots(nrows=4, ncols=8, figsize=(12, 6))
for i in range(4):
for j in range(8):
ax[i][j].imshow(filters[:, :, 0, i*8+j], cmap='cividis')
ax[i][j].axis('off')
plt.show()
На виході отримаємо 32 візуалізованих фільтри, які показують, як кожен фільтр реагує на вхідні дані. Це може бути корисним інструментом для розуміння того, як CNN працює.
Для виводу фільтрів другого шару використаємо такий код:
filters, biases = model.layers[1].get_weights()
fig, ax = plt.subplots(nrows=8, ncols=8, figsize=(12, 12))
for i in range(8):
for j in range(8):
ax[i][j].imshow(filters[:, :, 0, i*8+j], cmap='cividis')
ax[i][j].axis('off')
plt.show()
Розміри ядер було вибрано великими для кращої візуалізації.