opencv学习笔记(二)

news/2024/9/21 16:37:38

文章目录

    • 绘制几何图形
    • 获取并修改图像中的像素点
    • 算术操作
      • 图像的混合

绘制几何图形

‘’’
1’绘制直线

2‘绘制圆形

3’绘制矩形

4‘向图像中添加文字

5’效果展示

import cv2
import  numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
img=np.zeros((512,512,3),np.uint8)
cv.line(img,(0,0),(511,511),(255,0,0),5)
cv.circle(img,(256,256),60,(0,0,255),-1)
cv.putText(img,"hello",(100,150),cv.FONT_HERSHEY_COMPLEX,5,(255,255,255),3)
plt.imshow(img[:,:,::-1])
plt.show()

‘’’

在这里插入图片描述

获取并修改图像中的像素点

像素点的改变在图片上比较难以观察,则输出了改变点的像素点

# 更改(100,100)处的像素值
img[100,100]=(0,0,255)
plt.imshow(img[:,:,::-1])
#返回这一点的像素值
print(img[100,100]) #[  0   0 255]# ####获取像素的属性print(img.shape)#(512, 512, 3)行、列、通道数
print(img.dtype)#uint8数据类型
print(img.size)#786432图像大小#####通道的拆分与合并# b,g,r=cv.split(img)# img=cv.merge((b,g,r))# ####色彩空间的改变
test=cv.imread("opencv_1.png")
print(plt.imshow(test))
print(plt.imshow(test[:,:,::-1]))#AxesImage(80,52.8;496x369.6)#AxesImage(80,52.8;496x369.6)# cv.imshow('opencv_1.png',test)# img=cv.imread("opencv_1.png",1)
# cv.imshow('opencv_1.png',img)#灰色图形b,g,r=cv.split(test)
plt.imshow(b,cmap=plt.cm.gray)
img2=cv.merge((b,g,r))
plt.imshow(img[:,:,::-1])cv.imshow('opencv_1.png',test)

算术操作

‘’’
可以将两幅图相加,或者通过numpy操作添加两幅图像,
两幅图像应该具有相同的大小和类型,或者第二个图像可以是标量值
opencv加法是饱和操作,numpy中是模运算

import cv2
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt# 读取图像
img1=cv.imread('opencv_1.png');img2=cv.imread("opencv_2.png");
plt.imshow(img1[:,:,::-1])
#加分运算
img3=cv.add(img2,img1)
img4=img1+img2
print(img3.shape)
img_200x200=cv.resize(img1,(200,200))
img_half=cv.resize(img1,(0,0),fx=0.5,fy=0.5,interpolation=cv.INTER_NEAREST)
cv.imshow("img_half",img_half)
cv.imshow("image",img_200x200)# 图像显示
cv.imshow('img3',img3)cv.imshow('img4',img4)# fig,axes=plt.subplot(nrows=1,ncols=2,figsize=(10.8),dpi=100)
# axes[0].imshow(img3[:,:,::-1])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图像的混合

img5=cv2.addWeighted(img1,0.7,img2,0.3,0)#表示所占权重不同
cv.imshow('img5',img5)
# cv.waitKey(0)# ####图像缩放photo1=cv.imread('opencv_2.png')
cv.imshow("123",photo1)#缩放变换
# rows,cols=photo1.shape[:2]
res=cv.resize(photo1,(0,0),fx=0.5,fy=0.5)cv.imshow("qw",res)

在这里插入图片描述
在这里插入图片描述

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_transformed=cv2.warpAffine(img,M,(400,600))
cv2.imshow("img_transformed",img_transformed)cv2.waitKey(0)

在这里插入图片描述

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

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

相关文章

使用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;从名片中提取姓名、职务…

使用Tesseract和OpenCV构建自动收据扫描仪

使用Tesseract和OpenCV构建自动收据扫描仪 这篇博客将介绍如何使用Tesseract和OpenCV构建自动收据扫描仪。将使用OpenCV构建系统的实际图像处理组件&#xff0c;包括&#xff1a; 检测图像中的收据&#xff08;边缘检测、轮廓检测、基于弧长和近似的轮廓滤波&#xff09;找到…