图像识别-opencv

news/2024/9/21 14:42:49

文章目录

    • 基本处理

基本处理

读取图像
存储图像

import cv2
color_img=cv2.imread('test.png')
print(color_img.shape)# 读取单通道
gray_img=cv2.imread('test.png',cv2.IMREAD_GRAYSCALE)
print(gray_img.shape)#把单通道图像保存后,再读取,仍然是3通道,相当于将单通道复制到3个通道保存
cv2.imwrite('grayscale_test.png',gray_img)
reload_grayscale=cv2.imread('grayscale_test.png')
print(reload_grayscale.shape)# 指定jpg质量,范围从1~100,默认95,值越高画质越好,文件越大
cv2.imwrite('anglababy.jpg',color_img,(cv2.IMWRITE_JPEG_QUALITY,20))#(1321, 738, 3)
#(1321, 738)
#(1321, 738, 3)

缩放、补边、裁边

import cv2
img=cv2.imread('test.png')# 缩小为200x200的正方形
img_200x200=cv2.resize(img,(200,200))# 不直接指定缩放后的大小,通过fx和fy指定缩放比例,0.5表示长宽各一半
# 插值方法默认为cv2.INTER_LINEAR,这里指定为最近邻插值
img_half=cv2.resize(img,(0,0),fx=0.5,fy=0.5,interpolation=cv2.INTER_NEAREST)# 上下各贴50像素的黑边
img_add=cv2.copyMakeBorder(img,50,50,0,0,cv2.BORDER_CONSTANT,value=(0,0,0))# 裁剪
patch_img=img[20:150,-180:-50]cv2.imshow("image",img_200x200)
cv2.imshow("img_half",img_half)
cv2.imshow("img_add",img_add)
cv2.imshow("patch_img",patch_img)
cv2.waitKey(0)

请添加图片描述

色调、明暗

import cv2img=cv2.imread('test.png')
# 通过cv2.cvtcolor把图像从RGB转到HSV
img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)# H空间中,绿色比黄色值高,所以给每个像素+15,黄色的就会变绿
turn_green_hsv=img_hsv.copy()
turn_green_hsv[:,:,0]=(turn_green_hsv[:,:,0]+15)
turn_green_img=cv2.cvtColor(turn_green_hsv,cv2.COLOR_HSV2BGR)cv2.imshow("turn_green_img",turn_green_img)# 减小饱和度会让图像损失鲜艳,变得更灰
colorless_hsv=img_hsv.copy()
colorless_hsv[:,:,1]=0.5*colorless_hsv[:,:,1]
colorless_img=cv2.cvtColor(colorless_hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("colorless_img",colorless_img)# 减小为原来的一半
darker_hsv=img_hsv.copy()
darker_hsv[:,:,2]=0.5*darker_hsv[:,:,2]
darker_img=cv2.cvtColor(darker_hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("darker_img",darker_img)cv2.waitKey(0)

请添加图片描述

仿射变换

图像的仿射变换涉及到图像的形状位置角度的变化,是深度学习预处理中常到的功能,在此简单回顾一下。仿射变换具体到图像中的应用,主要是对图像的缩放,旋转,剪切,翻转和平移的组合。在OpenCV中,仿射变换的矩阵是一个2×3的矩阵,其中左边的2×2子矩阵是线性变换矩阵,右边的2×1的两项是平移项:
需要注意的是,对于图像而言,宽度方向是x,高度方向是y,坐标的顺序和图像像素对应下标一致。所以原点的位置不是左下角而是右上角,y的方向也不是向上,而是向下。在OpenCV中实现仿射变换是通过仿射变换矩阵和cv2.warpAffine()这个函数:

import numpy as np
import cv2img = cv2.imread('test.png')# 沿着横纵轴放大1.6倍,之后平移(-150,-240),最后沿原图大小截取,等效于剪裁并放大
M_crop_dog = np.array([[1.6, 0, -150],[0, 1.6, -240]
], dtype=np.float32)# cv2.warpAffine(原始图像, 变换矩阵,变换后的图像大小)
img_dog = cv2.warpAffine(img, M_crop_dog,(400, 400))
cv2.imshow("img_dog", img_dog)# x轴的剪切变换,逆时针旋转角度15°
theta=15*np.pi/180
M_shear=np.array([[1,np.tan(theta),0],[0,1,0]
],dtype=np.float32)img_sheared=cv2.warpAffine(img,M_shear,(400,600))
cv2.imshow("img_sheared",img_sheared)# 顺时针旋转,角度15°
M_rotate=np.array([[np.cos(theta),-np.sin(theta),0],[np.sin(theta),np.cos(theta),0]
],dtype=np.float32)im_rotate=cv2.warpAffine(img,M_rotate,(400,600))
cv2.imshow("im_rotate",im_rotate)# 旋转+缩放+旋转组合,可以通过SVD分解理解
M=np.array([[1,1.5,-400],[0.5,2,-100]
],dtype=np.float32)img_tr![请添加图片描述](https://img-blog.csdnimg.cn/b5dcf8be1e2248968456ed1a3f13cac5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aKZ57yd6YeM55qE6I2J,size_20,color_FFFFFF,t_70,g_se,x_16)
ansformed=cv2.warpAffine(img,M,(400,600))
cv2.imshow("img_transformed",img_transformed)cv2.waitKey(0)

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pgtn.cn/news/17613.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

opencv学习笔记(二)

文章目录绘制几何图形获取并修改图像中的像素点算术操作图像的混合绘制几何图形 ‘’’ 1’绘制直线 2‘绘制圆形 3’绘制矩形 4‘向图像中添加文字 5’效果展示 import cv2 import numpy as np import cv2 as cv import matplotlib.pyplot as plt imgnp.zeros((512,512…

使用Python,OpenCV应用EAST文本检测器检测自然场景图像中的文本

使用Python,OpenCV应用EAST文本检测器检测自然场景图像中的文本1. 效果图2. 原理2.1 为什么自然场景文本检测如此具有挑战性?2.2 替代EAST文本检测实现3. 源码3.1 text_detection.py3.2 text_detection_video.py参考这篇博客将介绍如何使用Python&#x…

数据结构--搜索BFS

文章目录广度优先搜索典型例题广度优先搜索 广度优先搜索类似于树的层次遍历过程。它需要借助一个队列来实现。如图2-1-1所示,要想遍历从v0到v6的每一个顶点,我们可以设v0为第一层,v1、v2、v3为第二层,v4、v5为第三层,…

使用Tesseract和Python进行OCR和语言翻译

使用Tesseract和Python进行OCR和语言翻译 这篇博客将介绍如何使用Tesseract、Python自动进行OCR和文本翻译。使用textblob,翻译文本就像单个函数调用一样简单。(textblob翻译底层调用translate.google.com会报超时等,用translators库实现翻译…

[转]后期-快速消除痘痘,完美修复MM肌肤

是面对美景&#xff0c;即使皮肤不好也得露个脸啊!那MM的面子问题怎么办呢?简单&#xff0c;咱就通过Photoshop后期处理来<?xml:namespace prefix o />给MM打造完美水嫩的肌肤!远景照片 简单还原MM容颜日常拍摄的照片&#xff0c;很多时候是远景的拍摄&#xff0c;人物…

opencv-3

文章目录图像平滑图像金字塔开闭运算形态学操作掩膜模板匹配与霍夫变换灰度直方图边缘检测Canny边缘检测图像平滑 # 图像噪声 ################### # ##椒盐噪声 >>>>>>>>>>>>>>>>>>>>随机出现的白点或黑点# …

使用拼写检查提高Tesseract OCR准确性

使用拼写检查提高Tesseract OCR准确性 上一篇博客介绍了如何使用textblob库和Tesseract自动进行OCR文本&#xff0c;然后将其翻译为其他语言。这篇博客还将通过textblob应用自动拼写检查OCR文本来提高OCR准确性 &#xff08;能够使用textblob纠正拼写错误&#xff0c;纠正单词…

使用Python进行名片OCR(识别姓名,职务,电话,Email邮箱)

上一篇博客介绍了如何通过以下方式自动OCR和扫描收据&#xff1a; 检测输入图像中的接收应用透视变换以获得收据的自顶向下视图利用Tesseract对收据上的文本进行OCR使用正则表达式提取价格数据 这篇博客将介绍如何使用Python对名片进行OCR&#xff0c;从名片中提取姓名、职务…