>>> args = {"image": 'I:\\18Breakageratecalculation\\SVM run\\images\\001.jpg\\'} >>> image = cv2.imread(args["image"]) [ WARN:0@10.864] global loadsave.cpp:244 cv::findDecoder imread_('I:\18Breakageratecalculation\SVM run\images\001.jpg\'): can't open/read file: check file path/integrity >>> args = {"image": 'I:\18Breakageratecalculation\SVM run\images\001.jpg'}
时间: 2023-06-30 09:27:38 浏览: 189
根据您提供的代码,第一行中的 "image" 参数值似乎存在问题。它在结尾处有一个额外的反斜杠,这可能会导致 OpenCV 在读取图像时无法找到正确的文件路径。这是由于 Windows 操作系统使用反斜杠作为路径分隔符,而在 Python 字符串中反斜杠通常用作转义字符。
因此,您需要将路径中的反斜杠进行转义,或者使用原始字符串来避免这种情况。您第二行代码中的路径似乎已经进行了修正。您可以尝试下面的代码:
```
args = {"image": 'I:\\18Breakageratecalculation\\SVM run\\images\\001.jpg'}
image = cv2.imread(args["image"])
```
这应该可以成功读取图像文件。
相关问题
args = {"image": 'I:\\18Breakageratecalculation\\SVM run\\images\\030.jpg'} # load the image and apply SLIC and extract (approximately) # the supplied number of segments image = cv2.imread(args["image"]) segments = slic(img_as_float(image), n_segments=100, sigma=3) # show the output of SLIC fig = plt.figure('Superpixels') ax = fig.add_subplot(1, 1, 1) ax.imshow(mark_boundaries(img_as_float(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)), segments)) plt.axis("off") plt.show()保存超像素识别结果
可以使用下面的代码来保存超像素识别结果:
```
# create a directory to store the segmented images
if not os.path.exists("segmented_images"):
os.makedirs("segmented_images")
# save the image with superpixel boundaries
plt.imsave(os.path.join("segmented_images", "superpixel_boundaries.png"), mark_boundaries(img_as_float(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)), segments))
# loop over the unique segment values
for (i, segVal) in enumerate(np.unique(segments)):
# construct a mask for the segment
mask = np.zeros(image.shape[:2], dtype="uint8")
mask[segments == segVal] = 255
# apply the mask to the image
masked_image = np.multiply(image, cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR) > 0)
# save the masked image as a file
filename = os.path.join("segmented_images", "segment_%d.png" % i)
cv2.imwrite(filename, masked_image)
```
这将在当前目录下创建一个名为 "segmented_images" 的文件夹,并将超像素边界图像和每个超像素块保存为单独的图像文件。
from skimage.segmentation import slic from skimage.segmentation import mark_boundaries from skimage.util import img_as_float import matplotlib.pyplot as plt import numpy as np import cv2 import os # args args = {"image": 'I:\\18Breakageratecalculation\\SVM run\\images\\030.jpg'} # load the image and apply SLIC and extract (approximately) # the supplied number of segments image = cv2.imread(args["image"]) segments = slic(img_as_float(image), n_segments=100, sigma=3) # show the output of SLIC fig = plt.figure('Superpixels') ax = fig.add_subplot(1, 1, 1) ax.imshow(mark_boundaries(img_as_float(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)), segments)) plt.axis("off") plt.show() print("segments:\n", segments) print("np.unique(segments):", np.unique(segments)) # loop over the unique segment values for (i, segVal) in enumerate(np.unique(segments)): # construct a mask for the segment print("[x] inspecting segment {}, for {}".format(i, segVal)) mask = np.zeros(image.shape[:2], dtype="uint8") mask[segments == segVal] = 255 # apply the mask to the image masked_image = np.multiply(image, cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR) > 0) # save the masked image as a file filename = os.path.join(r"I:\18Breakageratecalculation\SVM run\run-images2\030", "segment_%d.png" % i) cv2.imwrite(filename, masked_image) # show the masked region cv2.imshow("Mask", mask) cv2.imshow("Applied", np.multiply(image, cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR) > 0)) cv2.waitKey(0)保存超像素识别结果图像
可以使用下面的代码来保存超像素识别结果图像:
```
# create a directory to store the segmented images
if not os.path.exists("segmented_images"):
os.makedirs("segmented_images")
# save the image with superpixel boundaries
plt.imsave(os.path.join("segmented_images", "superpixel_boundaries.png"), mark_boundaries(img_as_float(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)), segments))
# loop over the unique segment values
for (i, segVal) in enumerate(np.unique(segments)):
# construct a mask for the segment
mask = np.zeros(image.shape[:2], dtype="uint8")
mask[segments == segVal] = 255
# apply the mask to the image
masked_image = np.multiply(image, cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR) > 0)
# save the masked image as a file
filename = os.path.join("segmented_images", "segment_%d.png" % i)
cv2.imwrite(filename, masked_image)
```
这将在当前目录下创建一个名为 "segmented_images" 的文件夹,并将超像素边界图像和每个超像素块保存为单独的图像文件。
阅读全文