python - 使用 Opencv python 从图像中裁剪矩形

标签 python opencv image-processing crop

我试图从屏幕截图中裁剪矩形图像,图像背景必须是白色,我最终得到黑色,我该如何改变它?我想为最终图像制作 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()


最佳答案

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()

关于python - 使用 Opencv python 从图像中裁剪矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58778690/

相关文章:

python - DeepPavlov elmo 太慢了

python - 使用两个列表创建不同的句子

opencv - 在 ubuntu 12.04 上安装 opencv4 tegra

python - 我如何使用 NumpyArrayToRaster() 从 4 波段图像中提取 3 波段?

python - 如何使用 Opencv 模糊/羽化图像中对象的边缘?

python - 在 pandas.to_sql() 中使用 'callable' 方法的示例?

python - 在 Racket 中使用 Python 库

opencv - SURF + LSH - OpenCV - 检测同一页面扫描

opencv - opencv remap函数:如何将像素值设置为(0,0,0)

image-processing - 是否可以以编程方式检测图像的模糊、曝光、方向?