我有一个像这样的形象:

我想删除数字周围的黑色行和列.所以我希望结果如下:

我试试这个:
void findX(IplImage* imgSrc,int* min, int* max){
int i;
int minFound=0;
CvMat data;
CvScalar maxVal=cvRealScalar(imgSrc->width * 255);
CvScalar val=cvRealScalar(0);
//For each col sum, if sum < width*255 then we find the min
//then continue to end to search the max, if sum< width*255 then is new max
for (i=0; i< imgSrc->width; i++){
cvGetCol(imgSrc, &data, i);
val= cvSum(&data);
if(val.val[0] < maxVal.val[0]){
*max= i;
if(!minFound){
*min= i;
minFound= 1;
}
}
}
}
void findY(IplImage* imgSrc,int* min, int* max){
int …Run Code Online (Sandbox Code Playgroud) 我目前正在从事图像处理项目.我在VC++中使用Opencv2.3.1.我编写的代码使得输入图像仅被过滤为蓝色并转换为二进制图像.二进制图像有一些我不想要的小物体.我想消除那些小物体,所以我使用openCV的cvFindContours()方法来检测二进制图像中的轮廓.但问题是我无法消除图像输出中的小物体.我使用了cvContourArea()功能,但没有正常工作..,侵蚀功能也无法正常工作.
所以请有人帮我解决这个问题..
我获得的二进制图像:

我想要获得的结果/输出图像:

在下面的代码中我想使用该dilate函数,但我不知道如何将Mat类转换为InputArray和OutputArray.你能帮助我吗?
使用这个原型函数:
void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int, char**)
{
Mat edges;
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
//dilate(edges,edges,NULL);
Canny(edges, edges, 0, …Run Code Online (Sandbox Code Playgroud) c++ opencv function image-processing mathematical-morphology