关于#opencv#的问题:其中宽度和高度的起止值分别为10和20,矩形的中心为图像中心

#使用跟踪栏,用于调整图像中的矩形的宽度和高度。图像大小为320*240,其中宽度和高度的起止值分别为10和20,矩形的中心为图像中心。拖动跟踪栏可以放到矩形,缩小无效

import numpy as np
import cv2
img =np.zeros((240,320,3), np.uint8)+255 #创建一幅白色色图像
img3 = img2 = cv2.rectangle(img,(155,110),(165,130),(0,0,255),-1)#画矩形,红色填充
def doChange(x):
    global img
    W = cv2.getTrackbarPos('W','showbgr')
    H = cv2.getTrackbarPos('H','showbgr')
    if W <= 5 or H <= 10:
        img3 = img2  # 重置为初始矩形
    else:
        img3 = cv2.rectangle(img2, (160 - W, 120 - H), (160 + W, 120 + H), (0, 0, 255), -1)  # 画矩形,红色填充

cv2.namedWindow('showbgr')

cv2.createTrackbar('W','showbgr',5,160,doChange)
cv2.createTrackbar('H','showbgr',10,120,doChange)
while(True):
    cv2.imshow('showbgr',img3)
    k = cv2.waitKey(1)
    if k == 27:
        break
cv2.destroyAllWindows()

参考GPT和自己的思路:

为了实现在图像中调整矩形的宽度和高度,可以使用OpenCV中的createTrackbar方法创建跟踪栏。在这个特定的问题中,宽度和高度的起止值是10和20,同时矩形的中心位于图像的中心。根据这些要求,可以在doChange函数中实现以下操作:

  1. 获取跟踪栏的当前宽度和高度值W和H
  2. 如果W小于等于5或者H小于等于10,那么就将img3设置为初始矩形img2
  3. 否则,根据W和H的值,在图像中心绘制新的矩形,红色填充

最终的结果应该是一个包含跟踪栏的窗口,在该窗口中,你可以通过拖动跟踪栏修改矩形的宽度和高度。请注意,缩小操作是无效的。

具体的代码实现请参考上面的代码,其中包括设置窗口和跟踪栏,以及处理跟踪栏事件的代码。