OpenCV杂谈_07
一. 需要做的前期准备
- 环境配置:
Python版本:3.9.0
功能包:opencv-python(4.5.2.52)、numpy(1.20.1) - 一张提前拍摄好的用于鼠标点击选取物体的图片
- 一个用的顺手的IDE(本人推荐Pycharm)
二. 源码如下
import cv2
import numpy as np
coordinates = np.zeros((4, 2), np.int32)
counter = 0
def mousePoints(event, x, y, flags, params):
global counter
if counter < 5 and event == cv2.EVENT_LBUTTONDOWN:
coordinates[counter] = x, y
counter += 1
print(coordinates)
img = cv2.imread("books.jpg")
while True:
if counter == 4:
width, height = 250, 350
pst1 = np.float32([coordinates[0], coordinates[1], coordinates[2], coordinates[3]])
pst2 = np.float32([[0, 0], [width, 0], [0, height], [width, height]])
matrix = cv2.getPerspectiveTransform(pst1, pst2)
imgOutput = cv2.warpPerspective(img, matrix, (width, height))
cv2.imshow("Output Image", imgOutput)
for x in range(0, 4):
cv2.circle(img, (coordinates[x][0], coordinates[x][1]), 3, (0, 0, 255), cv2.FILLED)
img = cv2.imread("books.jpg")
cv2.imshow("Original Image", img)
cv2.setMouseCallback("Original Image", mousePoints)
cv2.waitKey(1)
三. 结果展示
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210520214144548.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDI0Nzg3Ng==,size_5,color_FFFFFF,t_70#pic_center)
四. 感悟与分享
- 学会获取图像中指定位置的点的像素坐标才是本次分享的初衷,虽然现在很多看图软件常常自带获图片中像素坐标的功能,但是能够在程序中实时地去调用这些像素坐标才能实现真正意义上的、更加复杂的图像处理。
- 参考课程及推荐:https://www.youtube.com/watch?v=DaQoorJQSZQ&list=PLMoSUbG1Q_r_sc0x7ndCsqdIkL7dwrmNF&index=10(内容为英文,且需要翻墙)
- 520快乐
如有问题,敬请指正。欢迎转载,但请注明出处。