当前位置: 首页 > news >正文

商城开发网站建设/网络推广站

商城开发网站建设,网络推广站,日照网站建设哪家专业,天猫是b2c还是c2c在进行计算机视觉模型训练前,我们经常会用到图像增强的技巧来获取更多的样本,但是有些深度学习框架中的方法对图像的变化方式可能并不能满足我们的需求,所以掌握OpenCV中一些常用的图像处理技巧对我们还是有不少帮助的。主要内容如下&#xf…

0906221ecf130b24b3fb1912faf67fdb.png

在进行计算机视觉模型训练前,我们经常会用到图像增强的技巧来获取更多的样本,但是有些深度学习框架中的方法对图像的变化方式可能并不能满足我们的需求,所以掌握OpenCV中一些常用的图像处理技巧对我们还是有不少帮助的。主要内容如下:

  • 图片读取(单通道、三通道)
  • 图片修改(剪切、旋转、通道分离)
  • 常用的变换(伽马修正、仿射变换)
  • 总结

开始之前先安装好 Opencv,并导入我们要用到的包:

import cv2
import random
import numpy as np
from matplotlib import pyplot as plt

1. 图片读取

首先使用OpenCV中的 imread 函数来进行单通道图像的读取,使用 imshow 显示读取的图像:

img_gray = cv2.imread('img.jpg', 0)cv2.imshow("jrs",img_gray)key = cv2.waitKey()
if key == 27:cv2.destroyAllWindows()

显示的结果如下,是一个灰度图:

9ea356f3e1f285f2cc544c1874cbb5fa.png

还可以查看我们图像的一些基本属性:

print(img_gray)
print(img_gray.dtype)
print(img_gray.shape)

我们在来看下三通道的图像读取方式,只需要将 imread 中第二个参数去掉:

img = cv2.imread('img.jpg')  
cv2.imshow("img",img)  
key = cv2.waitKey() 
if key == 27:cv2.destroyAllWindows()

结果如下:

bce8f47308b61eeceb6f358dbb6cecea.png

同样,我们可以再次查看图像的基本属性,会发现如下两个已经发生了变化。

print(img_gray)
print(img_gray.shape)

2. 图片修改

2.1 图像的裁剪

裁剪最简单的方式是获取图像数组的切片,如下:

img_crop = img[100:300,100:300]
cv2.imshow("img_crop", img_crop)
key = cv2.waitKey()
if key == 27:cv2.destroyAllWindows()

得到的结果如下:

c56d8eb57a8a553dd812b6390715e86b.png

2.2 图像通道分离

我们知道每个图像是由 RGB 三个颜色通道构成,所以我们可以使用 split 函数对原图像的三个通道进行分离:

B, G, R = cv2.split(img)

进行通道分离的后,我们就可以在每个通道上独立的进行数值变换,变换完成后再组合来生成新的图像。比如提升图像的亮度:

B,G,R = cv2.split(img)
for i in (B,G,R):randint = random.randint(50,100)limit = 255-randinti[i>limit]=255i[i<=limit]=randint+i[i<=limit]
img_merge = cv2.merge((B,G,R))
cv2.imshow("img_merge",img_merge)
key = cv2.waitKey()
if key==27:cv2.destroyAllWindows()

得到的效果如下:

4376ae42564a843e78b56d8f9d85fb4d.png

2.3 图像旋转

还可以使用 warpAffine 函数根据我们的设定的角度完成图像的旋转:

M = cv2.getRotationMatrix2D((img.shape[1] / 2, img.shape[0] / 2), 30, 1)
img_rotate = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))cv2.imshow('img_rotate', img_rotate)
key = cv2.waitKey(0)
if key == 27:cv2.destroyAllWindows()

这里我们不对图像进行缩放,旋转角度为30度,最后得到的效果如下:

37621611eccbb83cc61c6efa35c02e7a.png

3. 常用的变换

3.1 仿射变换

仿射变换允许图像倾斜并且可以在任意两个方向上发生伸缩。代码如下:

def random_warp(img, row, col):height, width, channels = img.shaperandom_margin = 100x1 = random.randint(-random_margin, random_margin)y1 = random.randint(-random_margin, random_margin)x2 = random.randint(width - random_margin - 1, width - 1)y2 = random.randint(-random_margin, random_margin)x3 = random.randint(width - random_margin - 1, width - 1)y3 = random.randint(height - random_margin - 1, height - 1)x4 = random.randint(-random_margin, random_margin)y4 = random.randint(height - random_margin - 1, height - 1)dx1 = random.randint(-random_margin, random_margin)dy1 = random.randint(-random_margin, random_margin)dx2 = random.randint(width - random_margin - 1, width - 1)dy2 = random.randint(-random_margin, random_margin)dx3 = random.randint(width - random_margin - 1, width - 1)dy3 = random.randint(height - random_margin - 1, height - 1)dx4 = random.randint(-random_margin, random_margin)dy4 = random.randint(height - random_margin - 1, height - 1)pts1 = np.float32([[x1, y1], [x2, y2], [x3, y3], [x4, y4]])pts2 = np.float32([[dx1, dy1], [dx2, dy2], [dx3, dy3], [dx4, dy4]])M_warp = cv2.getPerspectiveTransform(pts1, pts2)img_warp = cv2.warpPerspective(img, M_warp, (width, height))return img_warpimg_warp = random_warp(img, img.shape[0], img.shape[1])cv2.imshow('img_warp', img_warp)
key = cv2.waitKey(0)
if key == 27:cv2.destroyAllWindows()

运行后的效果如下:

bc84c9b7c225769b49ce91e461abfecc.png

3.2 伽马修正

伽马修正提升图像的对比度,让图像看起来更加的“明亮”。代码如下:

def adjust_gamma(image, gamma=1.0):invGamma = 1.0/gammatable = []for i in range(256):table.append(((i / 255.0) ** invGamma) * 255)table = np.array(table).astype("uint8")return cv2.LUT(image, table)img_gamma = adjust_gamma(img, 2)
cv2.imshow("img",img)
cv2.imshow("img_gamma",img_gamma)key = cv2.waitKey()
if key == 27:cv2.destroyAllWindows()

运行后的效果如下:

d2ac9b2bf662b8ce08930202e6769740.png

4. 总结

通过上面的方法已经能够满足我们绝大多数的图像增强需求了,当然和可以组合使用。

如果您觉得有所收获,请点个赞吧


微信公众号:PyMachine

2865aec6ec58e6995c449589a726eac7.png
http://www.jmfq.cn/news/5083975.html

相关文章:

  • 个人注册网站怎么注册/2022年新闻摘抄十条简短
  • 网站建设制作视频/百度本地惠生活推广
  • vs2012手机网站开发教程/制作网页的软件有哪些
  • 上海网站制作公司有哪些/营销网络营销
  • 各行各业网站建设售后完善/湛江seo推广公司
  • 做网站效果/一个具体网站的seo优化
  • wordpress 导航 分类/优化设计电子课本
  • 产品定制网站开发/百度上搜索关键词如何在首页
  • 易网拓营销型网站/百度网盘app下载安装电脑版
  • 科技 杭州 网站建设/营销策划方案ppt
  • 西安做网站公司 玖佰网络/怎么样把自己的产品网上推广
  • 深圳开发网站建设哪家好/谷歌seo是什么意思
  • 高端大气上档次的网站/成人速成班有哪些专业
  • 佛山做网站制作公司/技术短期培训班
  • 深圳网站建设 迈/百度后台推广登录
  • 郑州哪家做网站最好/昆山网站制作公司
  • 怎么用h5网站做动效/百度网盘app下载
  • 网上停车场做施工图人员网站/搜索引擎调词工具
  • 免费微信小程序开发者工具/整站优化
  • asp动态网站衣服销售/google关键词搜索技巧
  • 重庆教育网站建设/精准客源
  • 公司网站制作方案/上海百度推广
  • 营销型网站怎么做/做外贸用什么软件找客户
  • 深圳网站建设i9988/百度浏览器官网
  • 做网站办什么营业执照/最新的疫情最新消息
  • 天津 网站制作/推广工具有哪些
  • 湘潭网站建设湘潭振企专业/seo整站优化外包公司
  • dedecms仿新闻网站/武安百度seo
  • 网站怎么做镜像/公司网站建设步骤
  • 做网页的软件是什么/南京seo关键词排名