【问题标题】:Cropping rectangle from Image using Opencv python使用 Opencv python 从图像中裁剪矩形
【发布时间】:2020-03-05 19:15:27
【问题描述】:

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


【问题讨论】:

  • 裁剪使用cropped_image = image[y1:y2,x1:x2]

标签: python opencv image-processing crop


【解决方案1】:

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

将图像中存在的黑色像素转换为白色像素
原图


裁剪图像

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

【讨论】:

  • 您好! @Sebin Sunny 谢谢你的重播!我以 u wrtie 的身份运行代码,对于直方图,它是空白的 :( 如果矩形是黑色并且我希望它在白色背景中它也会变成白色
  • hist = cv2.calcHist([maskedImg],[0],None,[256],[0,256]) plt.hist(hist.ravel(),256,[0,256]) plt. title('Histogram for the picture') 代码将绘制直方图
  • 我知道那部分负责绘图,但是当我运行代码时它不会产生任何东西,知道该怎么做吗?
  • 这是我的新代码,绘图部分不起作用我不知道 :(
  • 绘图正在使用我共享的上述代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 2018-06-26
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
相关资源
最近更新 更多