0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Python+opencv进行图像处理

jf_78858299 来源:GOGO数据 作者:是沐沐呀 2023-02-08 10:57 次阅读

图像是 Web 应用中除文字外最普遍的媒体格式。流行的 Web 静态图片有 JPEG、PNG、ICO、BMP 等。动态图片主要是 GIF 格式。

为了节省图片传输流量,大型互联网公司还会定制特殊格式的图片,WEBP 格式就是一个代表。

Python 除了数据分析,做图片处理也是非常好用的。

用 Python 做图片处理,最著名的库就是 PIL(Python Imaging Library)了,支持最新Python3,而且有许多新的特性,Pillow 也成为了 Python 图片处理必不可少的工具之一了。

不过我们今天要使用的作图库是OpenCV Python ,下一期我们再来研究PIL

这篇文章主要介绍了Python+OpenCV实现图像二值化,帮助大家更好的利用python处理图片,感兴趣的朋友可以了解下。

图片处理库准备

OpenCV Python 来处理图片,安装过程如下:

图片加载

我们先来打开一张图片测试,如下可以成功加载图片表示已经

成功安装OpenCV-Python

图片缩放

在保持图片细节不变的前提下,把图片放大或者缩小。

其中img 是图片对象,img.shape 表示图片的形状大小,分别是高、宽、通道数。

# 获取图片尺寸
img = cv2.imread("./pic1.jpg")
h, w, ch = img.shape
print(h, w, ch)
  
'''
1240 960 3
'''

我们的思路如下:

程序读入图片文件,用 cv2.resize 方法,把图片等比例缩放为一半的大小。

# 获取图片尺寸
img = cv2.imread("./pic1.jpg")
h, w, ch = img.shape
print('原图尺寸:', h, w, ch)

new_h = int(h / 2)
new_w = int(w / 2)
res = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR)
cv2.imwrite('./half_pic1.jpg', res)

# 获取图片尺寸
img = cv2.imread("./half_pic1.jpg")
h, w, ch = img.shape
print('缩半原图尺寸:', h, w, ch)
    
'''
原图尺寸:1240 960 3
缩半原图尺寸:620 480 3
'''

实际效果如下:

图片裁剪

把图片的局部形状截取出来,这里我们截取小姐姐图像,按照自己需求去掉前后左右多余边框。

img = cv2.imread("./pic1.jpg")
h, w, ch = img.shape
print(h, w, ch)
# (x0,y0) (x1,y1) 矩阵
x0, y0 = 200, 80
x1, y1 = 880, 960
# img 是一个按行扫描的矩阵
res = img[y0:y1, x0:x1]
print('截取后 H,W=', res.shape[:2])
cv2.imwrite('./pic.jpg', res)

'''
1240 960 3
截取后 H,W= (880, 680)
'''

实际效果如下:

图像组合

把两个或者多个图像进行堆叠、拼接。

准备一个原图 pic1.jpg,再准备一个水印图 img.png,目标是把水印贴在人像图的最右下方。

# 读取原始图片
    image = cv2.imread('./pic1.jpg')
    (h, w) = image.shape[:2]
    print("SOURCE", image.shape)

    # 读取水印
    imgsy = cv2.imread('./img.png')
    (h_sy, w_sy) = imgsy.shape[:2]
    print("SHUIYIN", imgsy.shape)

    # 定义原图片选区
    roi = image[h - h_sy:h, w - w_sy:w]

    # 原图片选区和水印区融合,让水印透明
    for y in range(h_sy):
        for x in range(w_sy):

            p = imgsy[y, x]
            if (p[0], p[1], p[2]) == (0, 0, 0):
                imgsy[y, x] = roi[y, x]

    cv2.imwrite('./shuiyin+roi.png', imgsy)

    # 选区范围设定为融合后的水印
    image[h - h_sy: h, w - w_sy: w] = imgsy

    cv2.imwrite('./pic_sy.jpg', image)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1255

    浏览量

    69341
  • OpenCV
    +关注

    关注

    30

    文章

    628

    浏览量

    41264
  • python
    +关注

    关注

    56

    文章

    4782

    浏览量

    84456
收藏 人收藏

    评论

    相关推荐

    基于机器学习库opencv和平台Jupyter Notebook的车牌识别案例

    python+opencv实现车牌识别
    发表于 02-28 11:08

    【Toybrick RK3399Pro AI开发板试用体验】ACT Ⅵ:Linux下静态人脸识别 python+opencv

    程序,只要点击run即可,也不会报错。看了网上很多教程,python+opencv,在有深度训练源的情况下,7行代码就能实现,那我们现在就来试一试。首先,我们要找一个训练过的人脸的源,看了下大神的代码,我
    发表于 08-10 10:50

    关于OpenCV图像如何处理

    OpenCV-图像处理(25、直方图比较)
    发表于 04-27 15:14

    Vivado HLS实现OpenCV图像处理的设计流程与分析

    ,或者在更大的图像中对需要的特征或区域进行处理是,OpenCV似乎足以满足很多应用的要求,但对于高分辨率高帧率实时处理的场景下,
    发表于 07-08 08:30

    如何使用Python中的OpenCV模块检测颜色

    在这篇文章中,我们将看到如何使用 Python 中的 OpenCV 模块检测颜色,进入这个领域的第一步就是安装下面提到的模块。pip install opencv-pythonpip install
    发表于 02-09 16:31

    OpenCV图像处理编程研究

    OpenCV是一种用于数字图像处理和计算机视觉的函数库,由Intel微处理器研究实验室的视觉交互组开发,采用的开发语言是C++。本文通过学习掌握在O
    发表于 06-25 17:52 0次下载

    最全OpenCV教程及图像处理、目标跟踪、识别案例

    本专题主要帮助读者快速入门 OpenCV,而无需到处搜寻参考资料,为你免除大量自行搜索的时间,本专题主要给大家介绍OpenCV基础知识及应用领域设计,包含OpenCV教程、OpenCV
    发表于 07-06 14:11
    最全<b class='flag-5'>OpenCV</b>教程及<b class='flag-5'>图像</b><b class='flag-5'>处理</b>、目标跟踪、识别案例

    使用opencv进行图像处理

    使用opencv进行图像处理_于仕琪,感兴趣的可以看看。
    发表于 05-03 14:45 0次下载

    python图像处理opencv步骤是怎么样的

    越来越觉得python是一强大的工具,处理样本确实不错。最近因项目需要涉及到图片处理,所以开始用python调用opencv,再次觉得
    发表于 12-04 15:29 4400次阅读

    OpenCV函数图像处理目录说明

    本文档的主要内容详细介绍的是OpenCV函数图像处理目录说明。
    发表于 10-29 15:55 12次下载
    <b class='flag-5'>OpenCV</b>函数<b class='flag-5'>图像</b><b class='flag-5'>处理</b>目录说明

    如何使用Python OpenCV进行面部标志检测

    今天我们将使用相同的 OpenCV 和 Raspberry Pi 进行人脸标志检测。来自 dlib 库的预训练面部标志检测器模块将用于检测面部关键面部结构的位置,python OpenCV
    发表于 08-12 16:32 1429次阅读
    如何使用<b class='flag-5'>Python</b> <b class='flag-5'>OpenCV</b><b class='flag-5'>进行</b>面部标志检测

    如何使用PythonOpenCV进行图像拼接

      图像拼接是计算机视觉中最成功的应用之一。如今,很难找到不包含此功能的手机或图像处理API。在本文中,我们将讨论如何使用PythonOpenCV
    的头像 发表于 10-26 15:59 1937次阅读

    使用opencvpython进行智能火灾检测

    电子发烧友网站提供《使用opencvpython进行智能火灾检测.zip》资料免费下载
    发表于 11-02 15:08 0次下载
    使用<b class='flag-5'>opencv</b>和<b class='flag-5'>python</b><b class='flag-5'>进行</b>智能火灾检测

    如何使用OpenCVPython图像中提取感兴趣区域

    今天我们将一起探究如何使用OpenCVPython图像中提取感兴趣区域(ROI)。 在之间的文章中,我们完成了图像边缘提取,例如从台球桌中提取桌边。使用了简单的
    的头像 发表于 02-07 14:42 1772次阅读

    opencv-pythonopencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV-Pytho
    的头像 发表于 07-16 10:38 987次阅读