【问题标题】:Modified ROI and then adding it to the original image using python修改 ROI,然后使用 python 将其添加到原始图像中
【发布时间】:2020-08-17 15:26:35
【问题描述】:

我是 Python 和 OpenCV 的新手。我的任务是对图像的 ROI 执行一些操作,然后将该图像添加回原始图像。我怎么能做到这一点?例如,我想更改 ROI 图像的颜色,然后将其添加回来。我的代码如下:

for (i,c) in enumerate(contours_from_left_to_right):    
     cv2.drawContours(duplicate_img, [c], -1, (0,0,255), 3)
     cent_moment = cv2.moments(c)
     centroid_x = int(cent_moment['m10'] / cent_moment['m00'])
     centroid_y = int(cent_moment['m01'] / cent_moment['m00'])
     cv2.putText(duplicate_img, str(i+1), (centroid_x, centroid_y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
     cv2.imshow('Contours from Left to Right', duplicate_img)
     cv2.waitKey(0)
     (x, y, w, h) = cv2.boundingRect(c)    
     print("Top-Left Corner=",(x,y), "width= ",w,"height =",h)      
     ROI = roi_img[y:y+h, x:x+w]    
     cv2.imwrite("ROI_{}.png".format(image_number), ROI)
     image_number += 1

【问题讨论】:

  • 您想对 ROI 进行哪些更改?将 ROI 用作任何其他图像并根据需要对其进行处理。然后使用 numpy 切片将其放回原处。图像[y:y+h, x:x+w] = ROI
  • 非常感谢,在您的评论的帮助下,我能够完成所需的任务。

标签: python opencv image-processing


【解决方案1】:

当您选择投资回报率时,您将拥有 (x,y)。对 ROI 图像完成图像处理后,可以保存图像并使用枕头将 roi 图像粘贴回原始图像,跟随 ROI 的坐标。

from PIL import Image, ImageDraw, ImageFilter

#test
im1 = Image.open(args["image"]) #Original Image
im2 = Image.open("ROI.tif") #ROI Image after process 
back_im = im1.copy()
back_im.paste(im2, (ROIRegion[region][0][0], ROIRegion[region][0][1])) #(x, Y) coordinate
back_im.save('replace.tif', quality=95) #save image

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多