PyQt5 画图板

PyQt5 画图板

主要技术

  • PyQt5
  • QtDesigner
  • openCV

主要功能

  • 绘画
    • 画笔
    • 油漆桶
    • 直线
    • 矩形
    • 椭圆
    • 橡皮擦
  • 图片处理
    • 旋转、翻转
    • 亮度、饱和度、对比度、色调调节
    • 灰度化
    • 二值化
    • 反相(反色)
    • 浮雕
    • 边缘检测
    • 模糊
    • 锐化

详细代码

github仓库

实现过程遇到的问题

在pycharm上使用qtDesigner

配置qtDesigner

配置UIC

参考 Mac下pycharm+qtdesigner环境搭建

绘图时图像不能留存或重影问题

采取双缓冲绘图方法

我们再添加一个辅助画布,如果正在绘图,也就是鼠标按键还没有释放的时候,就在这个辅助画布上绘图,只有当鼠标按键释放的时候,才在真正的画布上绘图

参考2D绘图(八)双缓冲绘图

油漆桶Flood Fill算法问题

泛洪算法—Flood Fill,用于确定连接到多维数组中给定节点的区域。

基本原理就是从一个像素点出发,以此向周边的像素点扩充着色,直到图形的边界。

实现方法包括传统递归方式dfs、bfs和描绘线算法(Scanline Fill)等

在QImage上实现效率很低,因为getPixel操作很慢,可以进一步优化

def getPixel(x,y,pixels,w):
    i = (x + (y * w)) * 4
    return pixels[i:i + 3]

# 油漆桶
def floodFill(image,pos):
    fillPositions = []
    w, h = image.width(), image.height()
    pixels = image.bits().asstring
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值