Remove python version.
@ -2,9 +2,4 @@
|
||||
|
||||
Laboratoria przetwarzania obrazów
|
||||
|
||||
Rozwiązania zadań są umieszczane w konkretnych folderach ,,0n'' (gdzie ,,n'' to numer laboratoriów) w podfolderach ,,do_sprawdzenia''.
|
||||
Cała aplikacja pozwalająca przetestować funkcje z folderów ,,0n'' znajduje się w folderze ,,app/cpp/mysimplegimp'' w katalogu głównym projektu.
|
||||
|
||||
Wersja pythonowa będzie rozwijana w przyszłości -- ,,app/python/py_simple_gimp''
|
||||
|
||||
|
||||
Aplikacja znajduje się w folderze ,,app/cpp/mysimplegimp'' w katalogu głównym projektu.
|
@ -1,2 +0,0 @@
|
||||
"""Import classes"""
|
||||
from python.skeletonApp.skeletonApp import SkeletonApp
|
@ -1,9 +0,0 @@
|
||||
for file in $2*.cpp
|
||||
do
|
||||
echo "$file"
|
||||
[[ -e "$file" ]] || break
|
||||
output_file="$(basename -s .cpp "$file")"
|
||||
|
||||
echo "$output_file";
|
||||
touch $2$output_file'.py';
|
||||
done;
|
@ -1,25 +0,0 @@
|
||||
"""Main python file to run SkeletonApp."""
|
||||
import sys
|
||||
from PyQt6.QtGui import QPixmap, QIcon
|
||||
from PyQt6.QtWidgets import QApplication, QMainWindow
|
||||
# from PyQt6.QtCore import QResource
|
||||
from res import icons_qrc
|
||||
from src.gui.mainwindow_ui import Ui_MainWindow
|
||||
from PyQt6.QtGui import QAction
|
||||
|
||||
icons_qrc.qInitResources()
|
||||
|
||||
|
||||
def main():
|
||||
"""Main app."""
|
||||
app = QApplication(sys.argv)
|
||||
app.setWindowIcon(QIcon(QPixmap(":/icons/src/gui/images/icons/preview.png")))
|
||||
window = QMainWindow()
|
||||
ui = Ui_MainWindow()
|
||||
ui.setupUi(window)
|
||||
window.show()
|
||||
sys.exit(app.exec())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
@ -1,67 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/icons">
|
||||
<file>icons/chart_curve.png</file>
|
||||
<file>icons/chart_curve_add.png</file>
|
||||
<file>icons/chart_curve_delete.png</file>
|
||||
<file>icons/chart_line_edit.png</file>
|
||||
<file>icons/door_out.png</file>
|
||||
<file>icons/eye.png</file>
|
||||
<file>icons/eye_blue.png</file>
|
||||
<file>icons/eye_gray.png</file>
|
||||
<file>icons/eye_green.png</file>
|
||||
<file>icons/eye_red.png</file>
|
||||
<file>icons/folder.png</file>
|
||||
<file>icons/things_digital.png</file>
|
||||
<file>icons/transform_rotate_90.png</file>
|
||||
<file>icons/transform_rotate_180.png</file>
|
||||
<file>icons/transform_rotate_270.png</file>
|
||||
<file>icons/transform_rotate.png</file>
|
||||
<file>icons/zoom_in.png</file>
|
||||
<file>icons/zoom_out.png</file>
|
||||
<file>icons/chart_curve_error.png</file>
|
||||
<file>icons/chart_curve_go.png</file>
|
||||
<file>icons/draw_convolve.png</file>
|
||||
<file>icons/lightbulb.png</file>
|
||||
<file>icons/checkerboard.png</file>
|
||||
<file>icons/filter.png</file>
|
||||
<file>icons/flag_airfield_vehicle_safety.png</file>
|
||||
<file>icons/zoom_extend.png</file>
|
||||
<file>icons/zoom_last.png</file>
|
||||
<file>icons/convert_color_to_gray.png</file>
|
||||
<file>icons/edge_detection.png</file>
|
||||
<file>icons/personal_finance.png</file>
|
||||
<file>icons/witch.png</file>
|
||||
<file>icons/arrow_in.png</file>
|
||||
<file>icons/arrow_out.png</file>
|
||||
<file>icons/document_shapes.png</file>
|
||||
<file>icons/key_a.png</file>
|
||||
<file>icons/key_b.png</file>
|
||||
<file>icons/key_c.png</file>
|
||||
<file>icons/key_d.png</file>
|
||||
<file>icons/key_e.png</file>
|
||||
<file>icons/key_f.png</file>
|
||||
<file>icons/key_g.png</file>
|
||||
<file>icons/key_i.png</file>
|
||||
<file>icons/key_j.png</file>
|
||||
<file>icons/key_k.png</file>
|
||||
<file>icons/key_l.png</file>
|
||||
<file>icons/key_m.png</file>
|
||||
<file>icons/key_n.png</file>
|
||||
<file>icons/key_o.png</file>
|
||||
<file>icons/key_p.png</file>
|
||||
<file>icons/key_q.png</file>
|
||||
<file>icons/key_s.png</file>
|
||||
<file>icons/key_t.png</file>
|
||||
<file>icons/key_u.png</file>
|
||||
<file>icons/key_v.png</file>
|
||||
<file>icons/key_w.png</file>
|
||||
<file>icons/key_x.png</file>
|
||||
<file>icons/key_y.png</file>
|
||||
<file>icons/key_z.png</file>
|
||||
<file>icons/arrow_divide.png</file>
|
||||
<file>icons/arrow_join.png</file>
|
||||
<file>icons/universal_binary.png</file>
|
||||
<file>icons/videodisplay.png</file>
|
||||
<file>icons/key_r.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 975 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1002 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1023 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
@ -1,42 +0,0 @@
|
||||
INCLUDEPATH += $$PWD
|
||||
|
||||
SOURCES += $$PWD/histogram.py \
|
||||
$$PWD/pnm.py \
|
||||
$$PWD/tools.py \
|
||||
$$PWD/transformations/transformation.py \
|
||||
$$PWD/transformations/bin_gradient.py \
|
||||
$$PWD/transformations/bin_iterbimodal.py \
|
||||
$$PWD/transformations/bin_manual.py \
|
||||
$$PWD/transformations/bin_niblack.py \
|
||||
$$PWD/transformations/bin_otsu.py \
|
||||
$$PWD/transformations/blur_gaussian.py \
|
||||
$$PWD/transformations/blur_linear.py \
|
||||
$$PWD/transformations/blur_uniform.py \
|
||||
$$PWD/transformations/conversion_grayscale.py \
|
||||
$$PWD/transformations/convolution.py \
|
||||
$$PWD/transformations/corner_harris.py \
|
||||
$$PWD/transformations/correction.py \
|
||||
$$PWD/transformations/edge_canny.py \
|
||||
$$PWD/transformations/edge_gradient.py \
|
||||
$$PWD/transformations/edge_laplacian.py \
|
||||
$$PWD/transformations/edge_laplacian_of_gauss.py \
|
||||
$$PWD/transformations/edge_prewitt.py \
|
||||
$$PWD/transformations/edge_roberts.py \
|
||||
$$PWD/transformations/edge_sobel.py \
|
||||
$$PWD/transformations/edge_zero.py \
|
||||
$$PWD/transformations/histogram_equalization.py \
|
||||
$$PWD/transformations/histogram_stretching.py \
|
||||
$$PWD/transformations/hough.py \
|
||||
$$PWD/transformations/hough_lines.py \
|
||||
$$PWD/transformations/hough_rectangles.py \
|
||||
$$PWD/transformations/map_height.py \
|
||||
$$PWD/transformations/map_horizon.py \
|
||||
$$PWD/transformations/map_normal.py \
|
||||
$$PWD/transformations/morph_dilate.py \
|
||||
$$PWD/transformations/morph_erode.py \
|
||||
$$PWD/transformations/morph_openclose.py \
|
||||
$$PWD/transformations/morphological_operator.py \
|
||||
$$PWD/transformations/negative_image.py \
|
||||
$$PWD/transformations/noise_bilateral.py \
|
||||
$$PWD/transformations/noise_median.py \
|
||||
$$PWD/transformations/segmentation.py
|
@ -1,86 +0,0 @@
|
||||
"""Histogram."""
|
||||
from ctypes.wintypes import RGB
|
||||
|
||||
from PyQt6.QtCore import qDebug
|
||||
from PyQt6.QtGui import QPainter, QImage
|
||||
from PyQt6.QtCore import Qt
|
||||
import enum
|
||||
import math
|
||||
|
||||
|
||||
class Channel(enum):
|
||||
RGB = 0,
|
||||
RChannel = 1,
|
||||
GChannel = 2,
|
||||
BChannel = 3,
|
||||
LChannel = 4
|
||||
|
||||
|
||||
class Histogram:
|
||||
"""Histogram"""
|
||||
def __init__(self, image: QImage):
|
||||
self.R = {0: 0}
|
||||
self.G = {0: 0}
|
||||
self.B = {0: 0}
|
||||
self.L = {0: 0}
|
||||
|
||||
self.generate(image)
|
||||
self.maximum = 0
|
||||
self.ratio = 0
|
||||
|
||||
def generate(self, image: QImage):
|
||||
"""Generate histogram."""
|
||||
qDebug("Not implemented yet!")
|
||||
pass
|
||||
|
||||
def maximumValue(self, selectedChannel=Channel.RGB):
|
||||
"""Maximum value."""
|
||||
qDebug("Not implemented yet!")
|
||||
|
||||
return 0
|
||||
|
||||
def get(self, channel=Channel.LChannel):
|
||||
"""Get."""
|
||||
if channel == Channel.LChannel:
|
||||
return self.L
|
||||
|
||||
elif channel == Channel.RChannel:
|
||||
return self.R
|
||||
|
||||
elif channel == Channel.GChannel:
|
||||
return self.G
|
||||
|
||||
elif channel == Channel.BChannel:
|
||||
return self.B
|
||||
|
||||
else:
|
||||
return 0
|
||||
|
||||
def getImage(self, channel='LChannel', pen=Qt.GlobalColor.gray):
|
||||
self.histImage = QImage(255, 100, QImage.Format.Format_ARGB32)
|
||||
self.histImage.fill(0)
|
||||
self.painter = QPainter(self.histImage)
|
||||
self.painter.setBrush(Qt.GlobalColor.transparent)
|
||||
self.painter.setPen(Qt.GlobalColor.transparent)
|
||||
self.painter.drawRect(0, 0, 255, 255)
|
||||
|
||||
# Calculate the aspect ratio using the maximal
|
||||
# value of the color histograms
|
||||
if channel == Channel.LChannel:
|
||||
self.maximum = self.maximumValue(Channel.LChannel)
|
||||
else:
|
||||
self.maximum = self.maximumValue()
|
||||
|
||||
self.ratio = float(100.0 / float(self.maximum))
|
||||
|
||||
# Preparing the painter
|
||||
self.painter.setBrush(pen)
|
||||
self.painter.setPen(pen.color())
|
||||
|
||||
hist = self.get(channel)
|
||||
|
||||
for cit in hist:
|
||||
h = 100 - math.floor(self.ratio * cit.value())
|
||||
self.painter.drawLine(cit.key(), h, cit.key(), 100)
|
||||
|
||||
return self.histImage
|