from PIL import Image
im = Image.open("background.jpg", "r") # 读取图片
box = (100, 100, 200, 200) # 选择区域
region = im.crop(box) #裁剪图片区域
region.show() # 展示图片区域
2 没有反馈,所以不知道roi在原图中的位置, cv2来画框 https://blog.csdn.net/weixin_38145317/article/details/89497616
import cv2
image = cv2.imread('background.jpg') # 读取图片
pic_box = cv2.rectangle(image, (100, 100), (200, 200), (0, 255, 0), 2) # 画框(xmin,ymin),(xmax, ymax),(颜色),粗细
# cv2.imwrite('2.jpg', image) # 写入图片
cv2.imshow("pic_box", pic_box) # 显示画过矩形框的图片
cv2.waitKey(0)
cv2.destroyWindow("pic_box")
3 打补丁的方式消除鱼影 img.paste(mask, (xmin_b, ymin_b))
# -*- coding=utf-8 -*-
# Author: zjc
# Creation Date:19-8-30
from PIL import Image
import matplotlib.pylab as plt
import cv2
import imageio
import numpy as np
# ==========================> mask1
# 获得mask1区域
xmin_m1 = 110
ymin_m1 = 400
xmax_m1 = 500
ymax_m1 = 500
# 获得图片, 裁剪mask1区域,
img = Image.open("background.jpg", "r")
box1 = (xmin_m1, ymin_m1, xmax_m1, ymax_m1)
# 1 展示"mask1区域"
mask1 = img.crop(box1)
# mask1.show()
# ==========================> mask2
# 获得mask2区域
xmin_m2 = 750
ymin_m2 = 400
xmax_m2 = 1100
ymax_m2 = 500
# 获得图片, 裁剪mask区域,
img = Image.open("background.jpg", "r")
box2 = (xmin_m2, ymin_m2, xmax_m2, ymax_m2)
# 1 展示"mask区域"
mask2 = img.crop(box2)
# mask2.show()
# ==========================> 被覆盖区域1
# 被覆盖区域covered2
xmin_cov1 = 110
ymin_cov1 = 200 # 200
xmax_cov1 = 500
ymax_cov1 = 300 # 300
# 2 画图展示"被覆盖区域1"
box2 = (xmin_cov1, ymin_cov1, xmax_cov1, ymax_cov1)
region_b = img.crop(box2)
# region_b.show()
# ==========================> 被覆盖区域2
# "被覆盖区域2"covered2
xmin_cov2 = 700
ymin_cov2 = 500
xmax_cov2 = 1100
ymax_cov2 = 600
# 4 画图展示"被覆盖区域2" cv2格式
image = cv2.imread('background.jpg')
pic = cv2.rectangle(image, (xmin_cov2, ymin_cov2), (xmax_cov2, ymax_cov2), (255, 0, 0), 2)
# cv2.imshow("pic_box", pic)
# ==========================> 把mask1 mask2 贴在covered1 covered2区域
# 5 把mask图片贴在img上面 https://blog.csdn.net/MiniCatTwo/article/details/80626330
img.paste(mask1, (xmin_cov1, ymin_cov1))
img.paste(mask2, (xmin_cov2, ymin_cov2))
print(type(img)) # <class 'PIL.JpegImagePlugin.JpegImageFile'>
'''cv2.imshow("pic_box", im) # 显示画过矩形框的图片
# cv2会报错是因为不是numpy格式
# TypeError: mat is not a numpy array, neither a scalar'''
# 展示最终图片
plt.imshow(img)
plt.show()
print(type(img))
img.save('/home/hp/zjc/nk_PyCharm/PyCharm_project/nk_fishbox/nk_roi_extract/background1.jpg')
cv2.waitKey(0)
cv2.destroyWindow("pic_box")