Tôi muốn sử dụng OpenCV2.0 và Python2.6 để hiển thị hình ảnh được thay đổi kích thước. Tôi đã sử dụng và áp dụng ví dụ này nhưng thật không may, mã này dành cho OpenCV2.1 và dường như không hoạt động trên 2.0. Đây là mã của tôi:
import os, glob
import cv
ulpath = "exampleshq/"
for infile in glob.glob[ os.path.join[ulpath, "*.jpg"] ]:
im = cv.LoadImage[infile]
thumbnail = cv.CreateMat[im.rows/10, im.cols/10, cv.CV_8UC3]
cv.Resize[im, thumbnail]
cv.NamedWindow[infile]
cv.ShowImage[infile, thumbnail]
cv.WaitKey[0]
cv.DestroyWindow[name]
Vì tôi không thể sử dụng
cv.LoadImageM
Tôi đã sử dụng
cv.LoadImage
Thay vào đó, không có vấn đề gì trong các ứng dụng khác. Tuy nhiên, cv.iplimage không có hàng thuộc tính, col hoặc kích thước. Bất cứ ai có thể cho tôi một gợi ý, làm thế nào để giải quyết vấn đề này?
Lướt
2.6722 Huy hiệu vàng15 Huy hiệu bạc29 Huy hiệu đồng2 gold badges15 silver badges29 bronze badges
hỏi ngày 16 tháng 11 năm 2010 lúc 14:55Nov 16, 2010 at 14:55
1
Nếu bạn muốn sử dụng CV2, bạn cần sử dụng chức năng
cv.LoadImageM
2.Ví dụ, điều này sẽ thay đổi kích thước cả hai trục bằng một nửa:
small = cv2.resize[image, [0,0], fx=0.5, fy=0.5]
và điều này sẽ thay đổi kích thước hình ảnh để có 100 col [chiều rộng] và 50 hàng [chiều cao]:
resized_image = cv2.resize[image, [100, 50]]
Một tùy chọn khác là sử dụng mô -đun
cv.LoadImageM
3, bằng cách sử dụng:small = scipy.misc.imresize[image, 0.5]
Rõ ràng có nhiều tùy chọn hơn bạn có thể đọc trong tài liệu của các chức năng đó [cv2.resize, scipy.misc.imresize].
Cập nhật: Theo tài liệu SCIPY:
According to the SciPy documentation:
4 không được chấp nhận trong SCIPY 1.0.0 và sẽ bị xóa trong 1.2.0. Sử dụngcv.LoadImageM
5 thay thế.deprecated in SciPy 1.0.0, and will be removed in 1.2.0.cv.LoadImageM
Use5 instead.cv.LoadImageM
Lưu ý rằng nếu bạn đang tìm cách thay đổi kích thước theo một yếu tố, bạn thực sự có thể muốn
cv.LoadImageM
6.resize by a factor, you may actually want
cv.LoadImageM
6.
Fabian N.
3.7392 huy hiệu vàng21 Huy hiệu bạc45 Huy hiệu đồng2 gold badges21 silver badges45 bronze badges
Đã trả lời ngày 12 tháng 9 năm 2013 lúc 14:51Sep 12, 2013 at 14:51
Emememememem
5.4361 Huy hiệu vàng23 Huy hiệu bạc29 Huy hiệu đồng1 gold badge23 silver badges29 bronze badges
10
Ví dụ nhân đôi kích thước hình ảnh
Có hai cách để thay đổi kích thước một hình ảnh. Kích thước mới có thể được chỉ định:
Manually;
7cv.LoadImageM
8cv.LoadImageM
Bởi một yếu tố tỷ lệ.
9, trong đó FX là hệ số tỷ lệ dọc theo trục ngang và FY dọc theo trục thẳng đứng.fx is the scaling factor along the horizontal axis and fy along the vertical axis.cv.LoadImageM
Để thu nhỏ một hình ảnh, nó thường sẽ trông tốt nhất với nội suy inter_area, trong khi để phóng to một hình ảnh, nó thường sẽ trông tốt nhất với inter_cubic [chậm] hoặc inter_linear [nhanh hơn nhưng trông vẫn ổn].
Ví dụ thu nhỏ hình ảnh để phù hợp với chiều cao/chiều rộng tối đa [tỷ lệ khung hình]
import cv2
img = cv2.imread['YOUR_PATH_TO_IMG']
height, width = img.shape[:2]
max_height = 300
max_width = 300
# only shrink if img is bigger than required
if max_height < height or max_width < width:
# get scaling factor
scaling_factor = max_height / float[height]
if max_width/float[width] < scaling_factor:
scaling_factor = max_width / float[width]
# resize image
img = cv2.resize[img, None, fx=scaling_factor, fy=scaling_factor, interpolation=cv2.INTER_AREA]
cv2.imshow["Shrinked image", img]
key = cv2.waitKey[]
Sử dụng mã của bạn với CV2
import cv2 as cv
im = cv.imread[path]
height, width = im.shape[:2]
thumbnail = cv.resize[im, [round[width / 10], round[height / 10]], interpolation=cv.INTER_AREA]
cv.imshow['exampleshq', thumbnail]
cv.waitKey[0]
cv.destroyAllWindows[]
Đã trả lời ngày 10 tháng 2 năm 2017 lúc 17:36Feb 10, 2017 at 17:36
6
Bạn có thể sử dụng chức năng GetSize để có được những thông tin đó, CV.GetSize [IM] sẽ trả về một tuple với chiều rộng và chiều cao của hình ảnh. Bạn cũng có thể sử dụng im.depth và img.nchan để có thêm một số thông tin.
Và để thay đổi kích thước một hình ảnh, tôi sẽ sử dụng một quy trình hơi khác, với một hình ảnh khác thay vì ma trận. Tốt hơn là cố gắng làm việc với cùng loại dữ liệu:
size = cv.GetSize[im]
thumbnail = cv.CreateImage[ [ size[0] / 10, size[1] / 10], im.depth, im.nChannels]
cv.Resize[im, thumbnail]
Hi vọng điêu nay co ich ;]
Julien
Đã trả lời ngày 20 tháng 11 năm 2011 lúc 22:23Nov 20, 2011 at 22:23
jlengrandjlengrandjlengrand
11.5K13 Huy hiệu vàng56 Huy hiệu bạc82 Huy hiệu đồng13 gold badges56 silver badges82 bronze badges
Đây là một chức năng để nâng cấp hoặc hạ thấp hình ảnh theo chiều rộng hoặc chiều cao mong muốn trong khi duy trì tỷ lệ khung hình
# Resizes a image and maintains aspect ratio
def maintain_aspect_ratio_resize[image, width=None, height=None, inter=cv2.INTER_AREA]:
# Grab the image size and initialize dimensions
dim = None
[h, w] = image.shape[:2]
# Return original image if no need to resize
if width is None and height is None:
return image
# We are resizing height if width is none
if width is None:
# Calculate the ratio of the height and construct the dimensions
r = height / float[h]
dim = [int[w * r], height]
# We are resizing width if height is none
else:
# Calculate the ratio of the width and construct the dimensions
r = width / float[w]
dim = [width, int[h * r]]
# Return the resized image
return cv2.resize[image, dim, interpolation=inter]
Cách sử dụng
cv.LoadImageM
0Sử dụng hình ảnh ví dụ này
Đơn giản chỉ cần hạ thấp xuống
cv.LoadImage
0 [trái] hoặc cao cấp thành cv.LoadImage
1 [phải]Đã trả lời ngày 4 tháng 9 năm 2019 lúc 3:19Sep 4, 2019 at 3:19
NathancyNathancynathancy
38.1K13 Huy hiệu vàng98 Huy hiệu bạc119 Huy hiệu đồng13 gold badges98 silver badges119 bronze badges
cv.LoadImageM
1Đã trả lời ngày 20 tháng 7 năm 2018 lúc 22:49Jul 20, 2018 at 22:49
Mathandymathandymathandy
1.59221 Huy hiệu bạc29 Huy hiệu đồng21 silver badges29 bronze badges
1