IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Python深度学习:OpenCV图像处理实战 HSV处理,图像旋转平移(读书笔记) -> 正文阅读

[人工智能]Python深度学习:OpenCV图像处理实战 HSV处理,图像旋转平移(读书笔记)

今天我们就来继续看一看OpenCV的使用。

今天使用的图如下:
在这里插入图片描述

一、图片的自由缩放以及边缘裁剪

# 1、对于图片的扩缩,OpenCV提供了一个简单的函数:cv2.resize
img = cv2.imread("2.jpg")
dst = cv2.resize(img,(300,300))
cv2.imshow("test",dst)
cv2.waitKey()

我们首先是读取了这张图片,之后对齐进行重新构造(基于矩阵),所以图片的整体是没有变化的,只是外形发生变化:
在这里插入图片描述
那么我们也可以进行截取:

# 截取:
img2 = cv2.resize(img,(300,300))
patch_tree = img2[50:200,50:200]
cv2.imshow("test2",patch_tree)
cv2.waitKey()

在这里插入图片描述
(这里就是截取了重新构造之后的图片)

二、图像色调的调整

CV2也可以对图片进行色彩和亮度上的调整,也就是所谓的HSV(H是指色调,S是饱和度,V是明暗度)
至于具体的数值,H的取值是[0,180],其他两个都是[0,255]
我们来看一下它们的影响:

色调H

用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;

饱和度S

饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

明度V

明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

现在我们在程序中具体的看一看把黄色削减:

img = cv2.imread("2.jpg")
img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

turn_green_hsv = img_hsv.copy()
# 下面这一行十分的关键 注意对180的取余
turn_green_hsv[:,:,0] = (turn_green_hsv[:,:,0] - 30) % 180
# 中括号里0表示选择的是色调,1是饱和度,2是明暗度
turn_green_hsv = cv2.cvtColor(turn_green_hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("test",turn_green_hsv)
cv2.waitKey()

结果如图:
在这里插入图片描述
如果减去120,就是这样:
在这里插入图片描述
那么我们再来看看饱和度和明暗度的调整:

img = cv2.imread("2.jpg")
img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
less_color_hsv = img_hsv.copy()
less_color_hsv[:,:,1] = less_color_hsv[:,:,1] * 0.6
turn_img = cv2.cvtColor(less_color_hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("test",turn_img)
cv2.waitKey()

在这里插入图片描述
目前是改变了图片的饱和度,明暗度的调整也是同理,把参数改称2就可以了。

三、图像的旋转、平移和翻转

OpenCV中图像的变换主要通过仿射变换矩阵和函数warpAffine()完成。
(可参考博客:仿射变换warpAffine

img = cv2.imread("2.jpg")
M_copy_img = np.array([
    [0,0.8,-100],
    [0.8,0,-12]
],dtype=np.float32)
img_change = cv2.warpAffine(img,M_copy_img,(300,300))
cv2.imshow("test",img_change)
cv2.waitKey()

在这里插入图片描述
其中M_copy_img是仿射变换矩阵,这里前两个矩阵的作用是缩小图形为原来的80%,之后又逆时针旋转90度,再向左平移100个像素单位,并向下平移12个像素单。

四、使用OpenCV扩大图像数据库

1、色彩的随机变换

img = cv2.imread("2.jpg")
img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
turn_green_hsv = img_hsv.copy()
turn_green_hsv[:,:,0] = (turn_green_hsv[:,:,0] + np.random.random()) % 180
turn_green_hsv[:,:,1] = (turn_green_hsv[:,:,1] + np.random.random()) % 180
turn_green_hsv[:,:,2] = (turn_green_hsv[:,:,2] + np.random.random()) % 180
turn_green_img = cv2.cvtColor(turn_green_hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("test",turn_green_img)
cv2.waitKey()

在这里插入图片描述

2、对鼠标的监控

使用鼠标在生成的图片上标记出目标位置,是最基本的数据处理内容。鼠标操作属于用户接口操作,在OpenCV中同样有相关的函数可以实现,主要由mouse_event实现。
mouse_event函数的功能是监控鼠标操作,对鼠标的点击、移动以及放开做出反应,根据不同的操作进行处理。
对鼠标的监控一共有十种事件:

# define CV_EVENT_MOUSEMOVE 0      滑动
# define CV_EVENT_LBUTTONDOWN 1    左键点击
# define CV_EVENT_RBUTTONDOWN 2    右键点击
# define CV_EVENT_MBUTTONDOWN 3    中键点击
# define CV_EVENT_LBUTTONUP 4      左键释放
# define CV_EVENT_RBUTTONUP 5      右键释放
# define CV_EVENT_MBUTTONUP 6      中键释放
# define CV_EVENT_LBUTTONDBLCLK 7  左键双击
# define CV_EVENT_RBUTTONDBLCLK 8  右键双击
# define CV_EVENT_MBUTTONDBLCLK 9  中键释放

当函数的事件完成后,会返回所在的x、y值,分别代表事件发生时的(x,y)坐标。窗口默认左上为原点,右边为x轴,向下为y轴。

使用示例(按‘q’退出):

img = cv2.imread("2.jpg")
rect_start = (0, 0)
rect_end = (0, 0)
def on_mouse(event,x,y,flags,param):

    # 鼠标左键按下,抬起,双击
    if event == cv2.EVENT_LBUTTONDOWN:
        rect_start = (x,y)
    elif event == cv2.EVENT_LBUTTONUP:
        rect_end = (x,y)
cv2.rectangle(img,rect_start,rect_end,(0,255,0),2)
cv2.namedWindow('test')
cv2.setMouseCallback("test",on_mouse)
while(1):
    cv2.imshow("test",img)
    if cv2.waitKey(1) & 0xff == ord('q'):
        break
cv2.destroyAllWindows()

这个就是不停的展出图片。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 18:56:35  更:2022-01-30 18:56:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 20:31:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码