Hu距完整代码(OpenCV

编程入门 行业动态 更新时间:2024-10-22 15:32:20

Hu距<a href=https://www.elefans.com/category/jswz/34/1771399.html style=完整代码(OpenCV"/>

Hu距完整代码(OpenCV

计算Hu距:

C++

#include "opencv2/opencv.hpp"using namespace cv;
using namespace std;int main(int argc, char **argv)
{bool showLogTransformedHuMoments = true; for (int i = 1; i < argc; i++){// Obtain filename from command line argumentstring filename(argv[i]); // Read ImageMat im = imread(filename,IMREAD_GRAYSCALE); // Threshold imagethreshold(im, im, 128, 255, THRESH_BINARY);// Calculate MomentsMoments moment = moments(im, false);// Calculate Hu Momentsdouble huMoments[7];HuMoments(moment, huMoments);// Print Hu Momentscout << filename << ": "; for(int i = 0; i < 7; i++){if(showLogTransformedHuMoments){// Log transform Hu Moments to make squash the rangecout << -1 * copysign(1.0, huMoments[i]) * log10(abs(huMoments[i])) << " ";  }else {// Hu Moments without log transform. cout << huMoments[i] << " ";  }}// One row per filecout << endl; }}

Python

import cv2, sys, os
from math import copysign, log10def main():showLogTransformedHuMoments = Truefor i in range(1,len(sys.argv)):# Obtain filename from command line argumentfilename = sys.argv[i]# Read imageim = cv2.imread(filename,cv2.IMREAD_GRAYSCALE)# Threshold image_,im = cv2.threshold(im, 128, 255, cv2.THRESH_BINARY)# Calculate Momentsmoment = cv2.moments(im)# Calculate Hu MomentshuMoments = cv2.HuMoments(moment)# Print Hu Momentsprint("{}: ".format(filename),end='')for i in range(0,7):if showLogTransformedHuMoments:# Log transform Hu Moments to make# squash the rangeprint("{:.5f}".format(-1*copysign(1.0,\huMoments[i])*log10(abs(huMoments[i]))),\end=' ')else:# Hu Moments without log transformprint("{:.5f}".format(huMoments[i]),end=' ')print()if __name__ == "__main__":main()

匹配Hu距

C++

#include "opencv2/opencv.hpp"using namespace cv;
using namespace std;int main(int argc, char **argv)
{Mat im1 = imread("images/S0.png",IMREAD_GRAYSCALE);Mat im2 = imread("images/K0.png",IMREAD_GRAYSCALE);Mat im3 = imread("images/S4.png",IMREAD_GRAYSCALE);double m1 = matchShapes(im1, im1, CONTOURS_MATCH_I2, 0);double m2 = matchShapes(im1, im2, CONTOURS_MATCH_I2, 0);double m3 = matchShapes(im1, im3, CONTOURS_MATCH_I2, 0);cout << "Shape Distances Between " << endl << "-------------------------" << endl;cout << "S0.png and S0.png : " << m1 << endl;cout << "S0.png and K0.png : " << m2 << endl;cout << "S0.png and S4.png : " << m3 << endl;
}

Python

import cv2def main():im1 = cv2.imread("images/S0.png",cv2.IMREAD_GRAYSCALE)im2 = cv2.imread("images/K0.png",cv2.IMREAD_GRAYSCALE)im3 = cv2.imread("images/S4.png",cv2.IMREAD_GRAYSCALE)m1 = cv2.matchShapes(im1,im1,cv2.CONTOURS_MATCH_I2,0)m2 = cv2.matchShapes(im1,im2,cv2.CONTOURS_MATCH_I2,0)m3 = cv2.matchShapes(im1,im3,cv2.CONTOURS_MATCH_I2,0)print("Shape Distances Between \n-------------------------")print("S0.png and S0.png : {}".format(m1))print("S0.png and K0.png : {}".format(m2))print("S0.png and S4.png : {}".format(m3))if __name__ == "__main__":main()

 

更多推荐

Hu距完整代码(OpenCV

本文发布于:2024-03-09 15:08:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1725330.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:完整   代码   Hu   OpenCV

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!