python-3.x - 如何在 python 中使用 opencv 设置图像 dpi?
问题描述
我正在尝试在 python 中使用 opencv 将 dpi 设置为 (72,72)。谁能告诉我如何使用 imwrite 在 opencv 中分配 dpi ?
img = cv2.imread('kitchen.jpeg')
img = cv2.resize(img,(500,500),interpolation=cv2.INTER_AREA)
img = cv2.cvtColor(img, cv2.COLOR_RGBA2RGB)
mask = np.zeros(img.shape[:2],np.uint8)
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
rect = (10,10,500,500)
cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')
img = img*mask2[:,:,np.newaxis]
lower_white = np.array([0, 0, 0], dtype=np.uint8)
upper_white = np.array([0,0,0], dtype=np.uint8)
mask = cv2.inRange(img, lower_white, upper_white) # could also use threshold
res = cv2.bitwise_not(img, img, mask)
cv2.imwrite('kitchen_processed.jpeg',img)
解决方案
emm dpi 仅用于打印。在图像写入期间,您不必这样做,或者您不能这样做(对于某些格式)。仅在图像打印时您必须这样做。如果你坚持这样做。图像写入后,以文件名作为变量调用 System.call
convert -density 75 -units pixelsperinch infile.jpg outfile.png
通常密度为300或更多。在你的情况下,在 75 使用它
编辑
添加这个。不确定您是否还有其他潜在问题。但是根据您的标题,添加此行应该可以解决您的问题
import subprocess
img = cv2.imread('kitchen.jpeg')
img = cv2.resize(img,(500,500),interpolation=cv2.INTER_AREA)
img = cv2.cvtColor(img, cv2.COLOR_RGBA2RGB)
mask = np.zeros(img.shape[:2],np.uint8)
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
rect = (10,10,500,500)
cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')
img = img*mask2[:,:,np.newaxis]
lower_white = np.array([0, 0, 0], dtype=np.uint8)
upper_white = np.array([0,0,0], dtype=np.uint8)
mask = cv2.inRange(img, lower_white, upper_white) # could also use threshold
res = cv2.bitwise_not(img, img, mask)
cv2.imwrite('kitchen_processed.png',img)
subprocess.run('convert -density 75 -units pixelsperinch kitchen_processed.png outfile.png')
推荐阅读
- reactjs - react native fs readDir 结果在渲染中为空
- docker - 我们对 docker 容器有某种超时选项吗?
- python - 如何将参数传递给 StringVar 的回调?
- .htaccess - ssl 下的所有页面,除了 index.html
- python - 使用 Postgres 时 AWS Beanstalk 上的 Django 错误
- mysql - 无法在 Ubuntu 16.04 上使用 docker 启动 mysql
- python - Flask App 访问类中定义的路由
- jquery - AttributeError: 'NoneType' 对象没有属性 'split',使用 ajax 向 django 发送 post 请求
- raku - 在 Perl 6 中,如何将模块的 pod 保留在文件的底部,同时仍然使用声明器块来记录方法/子程序?
- coq - 如何一步将一个定理分解为所有三个析取项?