当前位置:   article > 正文

opencv+c++图像取出中间点输出XY坐标_图像的中心点位置 c++

图像的中心点位置 c++
  1. #include<iostream> 
  2. #include<opencv2/core.hpp> 
  3. #include<opencv2/highgui.hpp> 
  4. #include<opencv2/imgproc.hpp> 
  5. using namespace std; 
  6. using namespace cv; 
  7. int main()
  8.  {  
  9. Mat img = imread("C:\\Users\\Administrator\\Desktop\\1.bmp", 0);  
  10. int rowNumber = img.rows;//行数  
  11. int colNumber = img.cols*img.channels();//列数*通道数 =每一行元素的个数  
  12. int *mean = new int[rowNumber];
  13. //双重循环,遍历所有的像素值    
  14. for (int i = 0; i < rowNumber; i++)//行循环  
  15.  {      
  16. int* data = img.ptr<int>(i);//获取第I行的首地址      
  17. int hang = i;
  18. int meanCol=0;      
  19. int sum = 0;
  20. int temp ;      
  21. int *js = new int[colNumber];      
  22. for (int j = 0; j < colNumber; j++)//列循环 
  23.     {            
  24. js[j] = img.at<uchar>(i, j);            
  25. sum += js[j];
  26. temp = j/2;//在这里求一个中位数 可以得到y
  27.      } 
  28.       meanCol = sum / (temp*2);
  29.       mean[i] = meanCol;      
  30. //如果是白到黑输出白到黑的下标    
  31. //如果是黑到白输出黑到白的下标      
  32. if (i>0&&mean[i - 1]-mean[i]>0)//如果是白到黑 255-0 正数
  33.    {        
  34. int wb = i;
  35. printf("白到黑取出来的的点X值为:%d,Y值为:%d \n", temp, wb);       
  36. //return wb;      
  37. }        
  38. else if (i>0&&mean[i - 1] - mean[i]<0)//如果是黑到白 0-255 负数
  39.     {        
  40. int bw = i-1;
  41. printf("黑到白取出来的的点X值为:%d,Y值为:%d \n", temp, bw);         
  42.       //return bw;        
  43. }    
  44. }      
  45. system("pause");    
  46. waitKey(0);      
  47. return 0
  48. }  


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/324816
推荐阅读
相关标签
  

闽ICP备14008679号