opencv-python的简单应用

opencv-python的简单应用

图片矫正

原理

通过选取道图片的角点,再通过得到的点来进行变换得到变换矩阵,最后将图片按照变换矩阵进行变换,得到矫正后的图像

代码

python 复制代码
import cv2
import numpy as np
import matplotlib.pyplot as plt

img=cv2.imread('youhua.png')

cv2.imshow('img',img)
cv2.waitKey(0)
pos1=np.float32([[175,142],[621,35],[89,491],[652,546]])
pos2=np.float32(
    [[min(pos1[:,0]),min(pos1[:,1])],
     [max(pos1[:,0]),min(pos1[:,1])],
     [min(pos1[:,0]),max(pos1[:,1])],
     [max(pos1[:,0]),max(pos1[:,1])]
     ])
M=cv2.getPerspectiveTransform(pos1,pos2)
dst=cv2.warpPerspective(img,M,(img.shape[1],img.shape[0]))
cv2.imshow('dst',dst)
cv2.waitKey(0)

输出结果

添加水印

原理

主要就是先将水印提取出来,然后将图片中需要添加水印的部分选出来,将其融合,最后放回原图中,得到添加水印的图片

代码

python 复制代码
# 导入两张图
img=cv2.imread('imge.jpg')
logo=cv2.imread('LOGO.jpg')
# 调整图像大小
logo=cv2.resize(logo,(100,100))
#提取出原图中的添加logo地方
det=img[:100,:100]
# 转换为灰度,创建掩码
logo_gray=cv2.cvtColor(logo,cv2.COLOR_BGR2GRAY)
logo_mask = cv2.adaptiveThreshold(logo_gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 4)
# 提取出图案
logo=cv2.bitwise_or(logo,logo,mask=logo_mask)
# 将图像融合
det=cv2.bitwise_or(det,logo)
# 将添加完成的图案放回原图
img[:100,:100]=det
# cv2.imshow('logo',logo)
# cv2.waitKey(0)
print(img.shape,logo.shape)
# cv2.imshow("logo",logo)
# cv2.imshow('det',det)
# 显示图案
cv2.imshow('img',img)
cv2.waitKey(0)

输出结果

识别图片颜色并绘制轮廓

原理

先按照颜色提取出掩码,然后绘制轮廓

python 复制代码
import cv2
import numpy as np
# 读取图片
img=cv2.imread('color_1.png')
#转换为hsv识别颜色
img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# 提取黄色
hsv_lower=np.array([20,150,200])
hsv_upper=np.array([40,255,255])
img_mask=cv2.inRange(img_hsv,hsv_lower,hsv_upper)
#进行开运算,
img_mask=cv2.morphologyEx(img_mask,cv2.MORPH_OPEN,(5,5))
# 识别轮廓并绘制
c,h=cv2.findContours(img_mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
img_copy=img.copy()
cv2.drawContours(img_copy,c,-1,(0,0,255),2)
# 对面积进行判断,并绘制方框
for i in range(len(c)):
    contour_area=cv2.contourArea(c[i])
    if contour_area>10000:
        x,y,w,h=cv2.boundingRect(c[i])
        cv2.rectangle(img_copy,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow('img',img_copy)
cv2.waitKey(0)

输出结果

相关推荐
ChampaignWolf21 分钟前
AI插件深度对比 | Copilot、Tabnine、Codeium谁是王者
人工智能·copilot
初心未改HD27 分钟前
深度学习之CNN卷积层详解
人工智能·深度学习·cnn
南屹川29 分钟前
【CI/CD】持续集成与持续部署:从理论到实践
人工智能
AI医影跨模态组学44 分钟前
EBioMedicine美国佐治亚理工学院与埃默里大学:基于深度学习的放射组学与病理学多模态融合预测HPV相关口咽鳞状细胞癌预后
人工智能·深度学习·论文·医学·医学影像·影像组学
Agent手记1 小时前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
2601_957787581 小时前
矩阵运营的技术底座:为什么“一体化系统“正在取代“工具拼装“
人工智能·矩阵·矩阵运营
冬奇Lab1 小时前
Agent 系列(一):Agent 是什么——不只是「会调工具的 LLM」
人工智能·llm·agent
冬奇Lab2 小时前
RAG 系列(二十四):代码 RAG——让 AI 理解你的代码库
人工智能·llm
南屹川2 小时前
【算法】动态规划实战:从入门到精通
人工智能