Обрезка прямоугольника из изображения с помощью Opencv Python - PullRequest
1 голос
/ 09 ноября 2019

Я пытаюсь обрезать изображение прямоугольника со скриншота, фон для изображения должен быть белым, в итоге я получаю черный, Как я могу это изменить? Я хочу сделать гистогтам из rgb для окончательного изображения, и кажется, что только нулевая вертикальная линия, любая помощь очень важна! вот мой код:

import cv2 
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

image = cv2.imread(filename = "Screenshot from 2019-11-08 22-02-27.png")
mask = np.zeros(shape = image.shape, dtype = "uint8")
cv2.rectangle(img = mask, 
    pt1 = (0, 185), pt2 = (1900, 773), 
    color = (255, 255, 255), 
    thickness = -1)



maskedImg = cv2.bitwise_and(src1 = image, src2 = mask)
cv2.imwrite("processed.png", maskedImg)
plt.imshow(maskedImg)
plt.show()


plt.hist(maskedImg.ravel(),256,[0,256]); plt.show()


1 Ответ

0 голосов
/ 09 ноября 2019

import cv2 
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

image = cv2.imread(filename = "1.png")
mask = np.zeros(shape = image.shape, dtype = "uint8")
cv2.rectangle(img = mask, 
    pt1 = (0, 185), pt2 = (1900, 773), 
    color = (255, 255, 255), 
    thickness = -1)
maskedImg = cv2.bitwise_and(src1 = image, src2 = mask)
maskedImg[np.where((maskedImg==[0,0,0]).all(axis=2))] = [255,255,255]

cv2.imwrite("processed.png", maskedImg)
plt.imshow(maskedImg)
plt.show()

Преобразовать черный пиксель, представленный на изображении, в белый пиксель
Исходное изображение enter image description here


ОбрезатьИзображение enter image description here

enter image description here

color = ('b','g','r')
for i,col in enumerate(color):
    histr = cv2.calcHist([maskedImg],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])
plt.show()
...