我正在尝试OpenCV的ROI功能.有了这个,我试图裁剪出我加载的图像的一部分.之后,我试图保存图像并显示它.显示它不是一个问题,但保存它是.图像被存储为大的黑色矩形而不是实际的裁剪图像.这是我的代码:
import cv2
import numpy as np
from skimage.transform import rescale, resize
if __name__ == '__main__' :
# Read image
im = cv2.imread("/Path/to/Image.jpg")
img = resize(im, (400,400), mode='reflect')
# Select ROI
r = cv2.selectROI(img)
# Crop image
imCrop = img[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]
# Save first, then Display cropped image
cv2.imwrite("../../Desktop/Image.jpg", imCrop) # This is where there seems to be a problem
cv2.imshow("im", imCrop)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
我有一个 numpy 数组 shape (12,224,224)。这是 12 张大小的图像(244, 244)。当我只有一张图片时,这很简单。图像的大小(x,y)。例如,x是一个 size 的图像(400,400),我可以这样使用view_as_blocks:
from skimage.util import view_as_blocks as vablks
xx = vablks(x, block_shape=(8,8))
Run Code Online (Sandbox Code Playgroud)
这将导致形状块(50,50,8,8)。现在我想知道当我有图像列表时如何应用它。要么我失去了形状,即我的 12 个图像被组合成一个 (224,224) 块,分解为(28,28,8,8),或者我遇到了 ValueError。这是我尝试用于迭代 12 张图像并查看(224,224)成形图像的代码
xx = []
for item_ in x:
xx.append(blockSplitter(item_))
Run Code Online (Sandbox Code Playgroud)
其中 x 是图像列表。
这是错误:
ValueError: 'block_shape' is not compatible with 'arr_in'
Run Code Online (Sandbox Code Playgroud)
总的来说,我想知道如何在不丢失图像的情况下以 8x8 块的形式查看图像。帮助,请和谢谢。
我想在函数中做这样的事情:
if image.shape == 2 dimensions
return image # this image is grayscale
else if image.shape = 3 dimensions
return image # image is either RGB or YCbCr colorspace
Run Code Online (Sandbox Code Playgroud)
这里,图像是一个numpy数组.我无法定义检查条件.我真的陷入了困境.有人可以帮忙吗?