在将代码从Python转换为c时遇到问题#

2024-05-19 07:41:24 发布

您现在位置:Python中文网/ 问答频道 /正文

解决方法:我正在检测护照的MRZ。我有一个策略,但由于缺少文档,我无法转换以下代码行。我的项目使用OpenCvSharp和NumSharp,这是一个numpy到c的端口。任何帮助都将不胜感激。在

Python代码:

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# smooth the image using a 3x3 Gaussian, then apply the blackhat
# morphological operator to find dark regions on a light background
gray = cv2.GaussianBlur(gray, (3, 3), 0)
blackhat = cv2.morphologyEx(gray, cv2.MORPH_BLACKHAT, rectKernel)

# compute the Scharr gradient of the blackhat image and scale the
# result into the range [0, 255]
gradX = cv2.Sobel(blackhat, ddepth=cv2.CV_32F, dx=1, dy=0, ksize=-1)
gradX = np.absolute(gradX)
(minVal, maxVal) = (np.min(gradX), np.max(gradX))
gradX = (255 * ((gradX - minVal) / (maxVal - minVal))).astype("uint8")

代码:

^{pr2}$

//计算blackhat图像的Scharr梯度并缩放 //结果在[0,255]范围内 Cv2.索贝尔(黑帽,格拉德克斯,MatType.CV_32F型,1,0,-1,1,0)

        //(minVal, maxVal) = (np.min(gradX), np.max(gradX))
        double minVal, maxVal;
        gradX.MinMaxLoc(out minVal, out maxVal);

        //gradX = (255 * ((gradX - minVal) / (maxVal - minVal))).astype("uint8")
        gradX.ConvertTo(gradX, MatType.CV_8U, 255.0 / (maxVal - minVal), -255.0 / minVal);

特别是我在Python代码的最后一行有问题。我不知道如何在c中执行那个计算。我也不确定是否正确地获取了minVal和{}值。在


Tags: the代码imagenpmincv2cvmax
2条回答

以下是我最初问题的解决方案:

// compute the Scharr gradient of the blackhat image and scale the
// result into the range [0, 255]
Cv2.Sobel(blackhat, gradX, MatType.CV_32F, 1, 0, -1, 1, 0);

//(minVal, maxVal) = (np.min(gradX), np.max(gradX))
double minVal, maxVal;
gradX.MinMaxLoc(out minVal, out maxVal);

//gradX = (255 * ((gradX - minVal) / (maxVal - minVal))).astype("uint8")
gradX.ConvertTo(gradX, MatType.CV_8U, 255.0 / (maxVal - minVal), -255.0 / minVal);

8位无符号整数是C中的byte。您可以这样做:

var gradX = Convert.ToByte(255 * ((gradX - minVal) / (maxVal - minVal)));

min和max做不了什么,我肯定帮不上忙。在

相关问题 更多 >

    热门问题