三小时精通OpenCV(一)

三小时精通OpenCV(一)

(1)改变图片大小
#导入包
import cv2
import numpy as np
#读入图片
img=cv2.imread("D:/zh/Pictures/Saved Pictures/2.jpg")
#打印图片大小
print(img.shape)
#改变图像的大小 先宽 后高
imgResize=cv2.resize(img,(300,200))
#图像剪裁 先高,后宽
imgCropped=img[0:200,200:500]
#打印改变后的图像大小
print(imgResize.shape)
print(imgCropped.shape)

#显示原图、改变大小后的图,剪裁的图
cv2.imshow("Image",img)
cv2.imshow("Image Resize",imgResize)
cv2.imshow("Image Cropped",imgCropped)

#设置窗口显示时间,为0时窗口无限显示
cv2.waitKey(0)
(2)图片处理
import cv2
import numpy as np

kernel=np.ones((5,5),np.uint8)
img=cv2.imread("D:/zh/Pictures/Saved Pictures/2.jpg")

#转化为灰度图
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#模糊图像
imgBlur=cv2.GaussianBlur(imgGray,(7,7),0)
#边缘检测
imgCanny=cv2.Canny(img,150,200)
#图像膨胀
imgDialation=cv2.dilate(imgCanny,kernel,iterations=1)
#图像腐蚀
imgEroded=cv2.erode(imgDialation,kernel,iterations=1)

#显示图片
cv2.imshow("Image",img)
cv2.imshow("Gray Image",imgGray)
cv2.imshow("Blur Image",imgBlur)
cv2.imshow("Canny Image",imgCanny)
cv2.imshow("Dialation Image",imgDialation)
cv2.imshow("Eroded Image",imgEroded)
cv2.waitKey(0)

运行结果对比图

(3)绘图
import cv2
import numpy as np

#初始化一个只有宽和高的灰度图
img=np.zeros((512,512))
print(img.shape)
cv2.imshow("Image",img)

#给图片上色 设置三个通道
img1=np.zeros((512,512,3),np.uint8)
#图片整体上色
img1[:]=255,0,0
cv2.imshow("Image1",img1)

#图片部分上色
img2=np.zeros((512,512,3),np.uint8)
img2[200:300,100:300]=255,0,0
cv2.imshow("Image2",img2)

#在图像上画线
img3=np.zeros((512,512,3),np.uint8)
#线不到头:图像  起点 终点 颜色 厚度
cv2.line(img3,(0,0),(200,300),(0,255,0),3)
#线到头:图像 起点 终点 颜色 厚度
cv2.line(img3,(0,0),(img3.shape[1],img3.shape[0]),(255,255,0),3)
#矩形
cv2.rectangle(img3,(0,0),(250,350),(0,0,255),2)
#矩形填充
cv2.rectangle(img3,(0,0),(100,150),(29,56,34),cv2.FILLED)
#圆形 图像 圆心 半径 颜色 厚度
cv2.circle(img3,(450,50),30,(255,255,0),5)
#图像上放置文本 图片 内容 起点 字体 大小 颜色 厚度
cv2.putText(img3,"OPENCV",(300,200),cv2.FONT_HERSHEY_COMPLEX,1,(0,150,0),1)

cv2.imshow("Image3",img3)
cv2.waitKey(0)

运行结果

(4)透视变换
import cv2
import numpy as np

img = cv2.imread("E:/graduatedata/code/OpencvPython/Resources/3.jpg")
width,height=250,350
 
#原图片中需要进行透视变换的四个点的位置(用画板打开图片获取四个点的值)
pts1=np.float32([[732,183],[1105,267],[616,677],[1030,790]])
#变换后四个点的位置
pts2=np.float32([[0,0],[width,0],[0,height],[width,height]])

#得到透视变换矩阵
matrix=cv2.getPerspectiveTransform(pts1,pts2)
#进行透视变换
imgOutput=cv2.warpPerspective(img,matrix,(width,height))

cv2.imshow("Image",img)
cv2.imshow("Output",imgOutput)

cv2.waitKey(0)

原图img 以及透视变换得到的图imgOutput
这里要注意,如果在原始图片读入后调用resize函数修改了图像大小,则通过画板所获取到的原图中的四个点位置信息将不再适用于resize后的图

(5)图片拼接
import cv2
import numpy as np

img=cv2.imread("E:/graduatedata/code/OpencvPython/Resources/3.jpg")
imgResize=cv2.resize(img,(300,200))

#图片拼接 水平方向和竖直方向
imgHor=np.hstack((imgResize,imgResize))
imgVer=np.vstack((imgResize,imgResize))

cv2.imshow("Horizontal",imgHor)
cv2.imshow("Vertical",imgVer)

cv2.waitKey(0)

水平拼接
竖直拼接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值