{"id":20840818,"url":"https://github.com/kangvcar/python_opencv","last_synced_at":"2025-05-08T22:05:06.513Z","repository":{"id":40473138,"uuid":"381410069","full_name":"kangvcar/Python_OpenCV","owner":"kangvcar","description":"基于Python OpenCV的图像算法原理及代码示例｜平移变换、尺度变换、旋转变换、仿射变换 求反、动态范围压缩、阶梯量化、阈值分割 加法、平均法消除噪声、减法 直方图均衡化、直方图规定化 线性平滑滤波器、线性锐化滤波器、非线性平滑滤波器、非线性锐化滤波器 傅里叶变换和反变换 理想滤波器、巴特沃斯滤波器，指数滤波器 高频增强滤波器、高频提升滤波器 带通带阻滤波器、同态滤波器 均值滤波器、排序统计滤波器 DPCM编码、余弦变换编码、小波变换编码 Sobel算子、Roberts算子、拉普拉斯算子、Canny算子、Prewitt算子、高斯拉普拉斯算子...","archived":false,"fork":false,"pushed_at":"2023-02-11T16:55:46.000Z","size":1717,"stargazers_count":70,"open_issues_count":0,"forks_count":9,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-08T22:04:39.384Z","etag":null,"topics":["cv","opencv","python"],"latest_commit_sha":null,"homepage":"https://mbd.pub/o/bread/YZqcm51r","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kangvcar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-29T15:18:36.000Z","updated_at":"2025-04-25T07:01:48.000Z","dependencies_parsed_at":"2023-01-21T04:48:44.512Z","dependency_job_id":null,"html_url":"https://github.com/kangvcar/Python_OpenCV","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kangvcar%2FPython_OpenCV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kangvcar%2FPython_OpenCV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kangvcar%2FPython_OpenCV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kangvcar%2FPython_OpenCV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kangvcar","download_url":"https://codeload.github.com/kangvcar/Python_OpenCV/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253154974,"owners_count":21862622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cv","opencv","python"],"created_at":"2024-11-18T01:17:52.608Z","updated_at":"2025-05-08T22:05:06.468Z","avatar_url":"https://github.com/kangvcar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :dizzy:基于Python OpenCV的图像算法研究\n\n本项目旨在帮助您深入了解图像处理的各种算法，并使用 Python OpenCV 库实现这些算法。您可以在 main.py 文件中找到 60 多种图像处理算法的详细说明，并且各个函数功能高度解耦，可以单独运行。\n\n## :rocket:研究背景\n\n图像处理是计算机视觉和图像识别领域中非常重要的研究方向。随着深度学习算法的发展，图像处理技术在很多领域得到了广泛的应用，Python OpenCV 是一个开源的图像处理库，提供了大量的图像处理算法，是图像处理领域中的重要工具。\n\n本项目旨在利用 Python OpenCV 库，研究多种图像处理算法的原理和实现方法，并实现了一个图像处理工具集。通过对图像处理算法的研究，不仅提高了我们的技术水平，也为以后的图像处理项目提供了重要的基础。\n\n## :wrench:实验环境\n\n- Python 3.7\n- OpenCV 4.4.0\n- Numpy\n\n## 🤖运行示例\n\n⚡运行本项目代码前请执行以下命令安装所依赖的库\n\n```shell\npip install opencv-python\npip install numpy\npip install Pillow\n```\n\nPython 代码如下（直接运行）：\n\n```python\nimport tkinter as tk\nfrom tkinter import filedialog\nimport cv2\nimport numpy as np\nimport os\nfrom PIL import Image, ImageTk\nimport os\n\n# 检查文件夹是否存在，如果不存在则创建一个文件夹\nif not os.path.exists('result'):\n    os.makedirs('result')\n\ndef select_image():\n    \"\"\"\n    点击选择图片按钮时调用的函数，用于选择图像并显示在窗口中\n    \"\"\"\n    global image_path\n    # 使用filedialog模块弹出选择文件对话框，获取选择的图像路径\n    image_path = filedialog.askopenfilename()\n    # 使用OpenCV读取图像\n    img = cv2.imread(image_path)\n    # 将OpenCV读取的BGR图像转换为RGB图像\n    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n    # 将图像转换为PIL图像\n    img = Image.fromarray(img)\n    # 将PIL图像转换为可以在Tkinter窗口中显示的图像\n    img = ImageTk.PhotoImage(img)\n    # 使用config()函数更新显示图像的标签的图像\n    input_label.config(image=img)\n    # 将图像存储在input_label变量中，以防图像被GC回收\n    input_label.image = img\n\ndef process_image():\n    # 声明全局变量 output_img\n    global output_img\n    # 使用 cv2.imread 读取图片\n    img = cv2.imread(image_path)\n    # 调用 translate_image 函数进行平移变换\n    output_img = translate_image(img)\n    # 将 BGR 格式图片转换为 RGB 格式\n    output_img = cv2.cvtColor(output_img, cv2.COLOR_BGR2RGB)\n    # 将 numpy 数组格式图片转换为 Image 对象\n    output_img = Image.fromarray(output_img)\n    # 将 Image 对象转换为 Tkinter 可用的 PhotoImage 对象\n    output_img = ImageTk.PhotoImage(output_img)\n    # 配置输出图片的 Label 组件，将处理后的图片显示在该组件上\n    output_label.config(image=output_img)\n    # 更新 output_label.image 属性的值\n    output_label.image = output_img\n    # 使用 cv2.imwrite 函数将处理后的图片保存到 result 文件夹中\n    cv2.imwrite(\"result/result.jpg\", output_img)\n\n\ndef translate_image(img):\n    # 获取图像的行数和列数\n    rows, cols = img.shape[:2]\n    # 创建一个移动矩阵\n    M = np.float32([[1,0,100],[0,1,50]])\n    # 应用仿射变换到图像上\n    output_img = cv2.warpAffine(img, M, (cols, rows))\n    # 返回处理后的图像\n    return output_img\n\n\n# 创建窗口\nroot = tk.Tk()\n# 设置窗口标题\nroot.title(\"图像处理器\")\n\n# 创建输入图像标签\ninput_label = tk.Label(root)\n# 将标签放置在左侧\ninput_label.pack(side=\"left\")\n\n# 创建输出图像标签\noutput_label = tk.Label(root)\n# 将标签放置在右侧\noutput_label.pack(side=\"right\")\n\n# 创建选择图像按钮\nselect_button = tk.Button(root, text=\"选择图像\", command=select_image)\n# 将按钮放置在窗口中\nselect_button.pack()\n\n# 创建处理图像按钮\nprocess_button = tk.Button(root, text=\"开始处理\", command=process_image)\n# 将按钮放置在窗口中\nprocess_button.pack()\n\n# 运行主循环\nroot.mainloop()\n```\n\n⚡ ***获取[完整版](https://mbd.pub/o/bread/YZqcm51r)查看所有60+种图像处理算法，包括但不限于：***\n\n- 图像的坐标变换\n    - [x] 平移变换\n    - [x] 尺度变换\n    - [x] 旋转变换\n    - [x] 仿射变换\n- 灰度映射\n  - [x] 求反\n  - [x] 动态范围压缩\n  - [x] 阶梯量化\n  - [x] 阈值分割\n- 图像的算术运算\n  - [x] 加法\n  - [x] 平均法消除噪声\n  - [x] 减法\n- 直方图修正：\n  - [x] 直方图均衡化\n  - [x] 直方图规定化\n- 空域滤波\n  - [x] 线性平滑滤波器\n  - [x] 线性锐化滤波器\n  - [x] 非线性平滑滤波器\n  - [x] 非线性锐化滤波器\n- 傅里叶变换和反变换\n  - [x] 傅里叶变换\n  - [x] 反傅里叶变换\n- 高通和低通滤波器\n  - [x] 理想滤波器\n  - [x] 巴特沃斯滤波器\n  - [x] 指数滤波器\n- 特殊高通滤波器\n  - [x] 高频增强滤波器\n  - [x] 高频提升滤波器\n- [x] 带通带阻滤波器\n- [x] 同态滤波器\n- [x] 空域噪声滤波器\n- [x] 组合滤波器\n- [x] 无约束滤波器\n- 变长编码\n    - [x] 哈夫曼编码\n    - [x] 哥伦布编码\n    - [x] 香农-法诺编码\n    - [x] 算数编码\n- [x] 位平面编码\n- 预测编码\n    - [x] DPCM编码\n    - [x] 余弦变换编码\n    - [x] 小波变换编码\n- 图像分割\n    - [x] 动态规划\n    - [x] 单阈值分割\n- 典型分割\n    - [x] SUSAN边缘检测\n    - [x] 主动轮廓\n    - [x] 分水岭分割\n- 二值形态学\n  - [x] 腐蚀\n  - [x] 膨胀\n  - [x] 开操作\n  - [x] 闭操作\n- 二值形态学的应用\n  - [x] 噪声去燥\n  - [x] 目标检测\n  - [x] 区域填充\n- 灰度形态学的应用\n  - [x] 形态梯度\n  - [x] 形态平滑\n  - [x] 高帽\n  - [x] 黑帽\n- 算子\n  - [x] Sobel算子\n  - [x] Roberts算子\n  - [x] Laplace算子\n  - [x] Canny算子\n  - [x] Prewitt算子\n  - [x] 高斯拉普拉斯算子\n  \n## 😘基础版\n\n[下载基础版](https://github.com/kangvcar/kkimage/releases/download/v1.2.0/kkapp-base.exe)\n\n- 每次支持处理一个图像\n- 支持的4种算法包括：平移变换、尺度变换、旋转变换、仿射变换\n\n## 🥰完整版\n\n[获取完整版](https://mbd.pub/o/bread/YZqcm51r)后可获得如下服务：\n\n- 完整版包含「60+图像处理算法的原理和可独立运行的代码示例」文件\n- 「图像处理工具集 - 完整版.exe」 程序\n- 完整版支持批处理，一次处理多张图像\n- 完整版支持所有60+种图像处理算法\n- 一键完成60+种不同的处理算法图像处理\n- 程序的所有源码\n\n![gui](https://github.com/kangvcar/kkimage/blob/master/pics/app.gif?raw=true)\n\n## :star2:实验结果\n\n实验结果将会存放在该项目的**result**文件夹下，包括处理后图像的展示等。\n\n## :clap:总结\n\n在本项目中，我们使用Python OpenCV库，研究了多种图像处理算法，并实现了这些算法，得到了实验结果。本项目的实验结果可以作为未来研究的参考，并且可以用于更多的图像处理相关的研究\n\n## 算法列表\n\n1. 图像的坐标变换：平移变换、尺度变换、旋转变换、仿射变换\n2. 灰度映射：求反、动态范围压缩、阶梯量化、阈值分割\n3. 图像的算术运算：加法、平均法消除噪声、减法\n4. 直方图修正：直方图均衡化、直方图规定化\n5. 空域滤波：线性平滑滤波器、线性锐化滤波器、非线性平滑滤波器、非线性锐化滤波器\n6. 频域图像增强：傅里叶变换和反变换\n7. 高通和低通滤波器：理想滤波器、巴特沃斯滤波器，指数滤波器\n8. 特殊高通滤波器：高频增强滤波器、高频提升滤波器\n9. 带通带阻滤波器、同态滤波器\n10. 空域噪声滤波器：均值滤波器、排序统计滤波器\n11. 组合滤波器：混合滤波器、选择性滤波器\n12. 无约束滤波器、有约束滤波器\n13. 变长编码：哈夫曼编码、哥伦布编码、香农-法诺编码、算数编码、位平面编码\n14. 预测编码：DPCM编码、余弦变换编码、小波变换编码\n15. 图像分割：动态规划、单阈值分割\n16. 典型分割：SUSAN边缘检测、主动轮廓、分水岭分割\n17. 二值形态学：腐蚀、膨胀、开启、闭合\n18. 基于二值形态学应用：噪声消除、目标检测、区域填充\n19. 灰度形态学：腐蚀、膨胀、开启、闭合\n20. 基于灰度形态学的应用：形态梯度、形态平滑、高帽变换、低帽变换\n21. 算子：Sobel算子、Roberts算子、拉普拉斯算子、Canny算子、Prewitt算子、高斯拉普拉斯算子\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkangvcar%2Fpython_opencv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkangvcar%2Fpython_opencv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkangvcar%2Fpython_opencv/lists"}