import cv2 import sys import os args = sys.argv first_arg = sys.argv[2] #image_path = sys.argv[1] #获取第二个命令行参数 # 加载图像 img = cv2.imread(first_arg) if img is None: print("Failed to load image") # 将图像转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 对灰度图像进行高斯滤波 blur = cv2.GaussianBlur(gray, (5, 5), 0) # 检测图像中的边缘 edges = cv2.Canny(blur, 100, 200) #定义一些参数 param1 = "F:/output/edges.png" # 保存处理后的图像到指定文件夹中 cv2.imwrite(param1, edges) param2 = os.path.abspath(param1) #将参数作为字符串输出到 stdout print("{}".format(param2)) #将stdout冲刷到标准输出,以便ae能够获取输出结果 sys.stdout.flush() # 显示原始图像和处理后的图像 cv2.imshow("Original Image", img) cv2.imshow("Edges", edges) # 等待按键按下 cv2.waitKey(0) # 关闭所有窗口 cv2.destroyAllWindows()
时间: 2024-03-10 08:48:07 浏览: 127
从你提供的Python代码来看,似乎并没有使用`urllib.parse.quote()`对路径进行编码。你可以尝试修改代码,在Python中对路径进行编码,例如:
```
import cv2
import sys
import os
import urllib.parse
args = sys.argv
first_arg = sys.argv[2] #获取第二个命令行参数
# 加载图像
img = cv2.imread(first_arg)
if img is None:
print("Failed to load image")
# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 对灰度图像进行高斯滤波
blur = cv2.GaussianBlur(gray, (5, 5), 0)
# 检测图像中的边缘
edges = cv2.Canny(blur, 100, 200)
# 定义一些参数
param1 = "F:/output/edges.png"
# 保存处理后的图像到指定文件夹中
cv2.imwrite(param1, edges)
# 对路径进行URL编码
param2 = urllib.parse.quote(os.path.abspath(param1))
# 将参数作为字符串输出到 stdout
print("{}".format(param2))
# 将stdout冲刷到标准输出,以便ae能够获取输出结果
sys.stdout.flush()
# 显示原始图像和处理后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Edges", edges)
# 等待按键按下
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
```
这样修改之后,JavaScript中使用`decodeURIComponent()`函数解码Python回调的参数应该就可以识别了。
阅读全文