【发布时间】:2018-02-16 08:46:44
【问题描述】:
我可以成功地从small images 裁剪投资回报率。 但是当我为large images尝试相同的代码时,由于屏幕分辨率小,窗口无法打开完整图像。我已经调整了图像的大小以适合窗口,但是在我调整裁剪后的图像大小时,它的像素值已更改。opencv 有什么方法可以使像素值保持不变。
import cv2
import numpy as np
refPt = []
cropping = False
def click_and_crop(event, x, y, flags, param):
global refPt, cropping
if event == cv2.EVENT_LBUTTONDOWN:
refPt = [(x, y)]
cropping = True
elif event == cv2.EVENT_LBUTTONUP:
refPt.append((x, y))
cropping = False
cv2.rectangle(clone1, refPt[0], refPt[1], (0, 255, 0), 2)
cv2.imshow("image", clone1)
image = cv2.imread('orig.jpg')
x,y,z=np.shape(image)
clone1=cv2.resize(image,(592,700),interpolation=cv2.INTER_AREA)
clone=clone1.copy()
cv2.namedWindow("image")
cv2.setMouseCallback("image", click_and_crop)
while True:
cv2.imshow("image", clone1)
key=cv2.waitKey(1) & 0xFF
if key == ord("r"):
clone1 = clone.copy()
if key == ord("c"):
break
if len(refPt) == 2:
roi = clone[refPt[0][1]:refPt[1][1], refPt[0][0]:refPt[1][0]]
roi1 = cv2.resize(roi,(y,x),interpolation=cv2.INTER_AREA)
cv2.imwrite("ROI", roi1)
cv2.waitKey(0)
print('Cropping Complete')
cv2.destroyAllWindows()
【问题讨论】:
-
缩放图像以适应您的屏幕分辨率,然后缩放所选的 roi。
-
缩放会导致像素值丢失。我不想丢失任何信息
-
您可以将其缩放以用于可视化目的...您的 roi 大小可能会变化 1-2 像素,但信息会在那里
-
要么按照建议调整大小,要么使用 Qt 等更好的 gui 工具包。
-
我编辑了问题,请检查
标签: opencv image-processing python-3.6