我是python和计算机视觉编程的新手。虽然我正在尝试制作图像大小调整工具。为此我使用的是python3.x和opencv2。 到目前为止,我可以通过遵循代码来调整图像大小,这只是一个例子。
my_img = cv2.imread('4.1.04.tiff')
resized_img = cv2.resize(my_img,None,fx=0.5, fy=0.5, interpolation =
cv2.INTER_CUBIC)
cv2.imshow('Image',resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
嗯,我的问题是我不知道如何通过拖动鼠标来调整图像大小。 请告诉我是否可以在opencv中使用,可以使用python中的其他库来完成。谢谢!
答案 0 :(得分:1)
我部分地完成了调整图像大小的代码,但它没有完美地工作,发生了一些主要的窗口大小问题。如果您重新运行代码,您将获得它。我也看不到完整的窗口和跟踪器栏
import cv2
#import numpy as np
pro_img = None
a1 = 0.5 #for default size of image
def nothing(x):
pass
def BnC_control(alpha):
alpha = alpha/10
#print(type(alpha))
if alpha >= 0.1:
return alpha
else:
return 0.1
img = cv2.imread('watch.jpg')
#img = np.zeros((512,512,3),np.uint16)
cv2.namedWindow('Window1',cv2.WINDOW_AUTOSIZE)
cv2.createTrackbar('Alpha','Window1',1,10,nothing)
while(True):
#r = BnC_control(a)
#pro_img = cv2.resize(img,None,fx=0.3,fy=0.3)
a = cv2.getTrackbarPos('Alpha','Window1')
a1 = BnC_control(a)
#print(a1)
re_img = cv2.resize(img,None,fx=a1,fy=a1,interpolation = cv2.INTER_CUBIC)
cv2.imshow('Window1',re_img)
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
此外,当我将插值更改为INTER_AREA时,它会出错。没有任何反应,并且跟踪器栏会消失。
答案 1 :(得分:0)
显示用于调整图像大小的轨迹栏的简单代码。有关更多详细信息,请参阅this link。
import cv2
import numpy as np
# method to be called by trackbar event
def onChange(pos):
global img,dst,rows,cols
# get value from trackbar
value = cv2.getTrackbarPos("resize_trackbar", "Result")
# resize image
dst = cv2.resize(src=img, dsize=(cols+value,rows+value))
#Run Main
if __name__ == "__main__" :
img = cv2.imread("image.jpg", -1)
# get original image size
rows,cols = img.shape[:2]
# initialize dst image
dst = np.copy(img)
# create display window
cv2.namedWindow("Result", cv2.WINDOW_NORMAL)
# create trackbar
cv2.createTrackbar("resize_trackbar", "Result", 0, 50, onChange)
while True:
cv2.imshow("Result", dst)
key = cv2.waitKey(1)
if key == ord('q'):
break
cv2.destroyAllWindows()