我正在处理一些X射线图像,我想从图像中检测并分割感兴趣的区域。
考虑输入图片
我想检测图像中正方形的形状,如图像中突出显示的那样
输出:感兴趣的区域将看起来像这样
这是我到目前为止完成的代码
useEffect(() => {
const backAction = () => {
currenScreen === "B"
? setScreen("A")
: currenScreen === "C"
? setScreen("B")
: BackHandler.exitApp();
return true;
};
const backHandler = BackHandler.addEventListener(
"hardwareBackPress",
backAction
);
return () => backHandler.remove();
}, []);
我得到的结果;
请指导我。
TIA
答案 0 :(得分:1)
可能有用的一件事是在执行Canny边缘检测之前,先对图像进行形态学梯度处理以突出Python OpenCV中的边缘。
输入:
import cv2
import numpy as np
# read image
img = cv2.imread("xray2.jpg")
# convert img to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# do morphology gradient
kernel = cv2.getStructuringElement(cv2.MORPH_RECT , (3,3))
morph = cv2.morphologyEx(gray, cv2.MORPH_GRADIENT, kernel)
# apply gain
morph = cv2.multiply(morph, 5)
# write results
cv2.imwrite("xray2_gradient_edges.jpg",morph)
# show lines
cv2.imshow("morph", morph)
cv2.waitKey(0)