当我使用canny edge算法时,它会产生与预期的粗色线相对的2条边,但我只想显示一条边以便使我的线和曲线检测算法更简单,任何关于我如何能够的想法让这种情况发生?

这是代码:
bool CannyEdgeDetection(DataStructure& col)
{
Mat src, src_gray;
Mat dst, detected_edges, fin;
int WhiteCount = 0, BCount = 0;
char szFil1[32] = "ocv.bmp";
char szFil2[32] = "dst.bmp";
src = imread(szFil1);
dst = imread(szFil1);
blur( src_gray, detected_edges, Size(3,3) );
Canny( src, dst, 100, 200, 3 );
imwrite(szFil2, dst );
IplImage* img = cvLoadImage(szFil2);
int height = img->height;
int width = img->width;
int step = img->widthStep;
int channels = img->nChannels;
uchar * datau = (uchar *)img->imageData;
for(int i=0;i<height;i++){
for(int j=0;j<width;j++){ …Run Code Online (Sandbox Code Playgroud) c++ opencv image-processing edge-detection mathematical-morphology
我有一个我想要克服的数组问题,如果我将const int"are"的值更改为2048,程序运行正常,但是在8192或甚至在4096(只有130,000个元素)它不起作用并且中断.我该如何解决这个问题?
#include <iostream>
#include <fstream>
#include <windows.h>
#pragma warning (disable : 4820 4619 4668 4101)
HANDLE ghEvents;
const int arc = 2048;
const int are = 8192;
struct DataStructure_init {
int main_seq[are][32];
int main_seq2[are][32];
int main_seq3[are][32];
int main_lim[are];
};
struct DataStructure_trus {
int net[arc];
int r6[arc];
int thr[arc];
};
int ftrus (unsigned char cmain[],int array_inst[],DataStructure_trus& va);
int finit (DataStructure_trus va,DataStructure_init& in);
using namespace std;
int main()
{
unsigned char cmain[are];
int array_inst[64]={0};
DataStructure_trus va;
DataStructure_init in;
ftrus(cmain,array_inst,va);
finit(va,in);
cin.get(); …Run Code Online (Sandbox Code Playgroud) vector<vector<int>> sort_a;
vector<int> v2;
vector<int> v3;
for (int i=0; i<4; ++i) {
v2.push_back(i);
for (int j=0; j<4; ++j) {
v3.push_back(j);
sort_a.push_back(v2);
sort_a.push_back(v3);
}
}
Run Code Online (Sandbox Code Playgroud)
矢量sort_a应该是一个4x4数组,而输出是31x1,有很多空元素,我如何在多维向量中插入元素?
我想尝试文本识别,所以我使用opencv来查找边缘和c ++以找到斜率,曲线等,边缘算法适用于大而整齐的字符组但是当它出现在小字体上时或者有很多背景噪音的文字,如嵌入在验证码中,它会挣扎并且看起来不完整,我的猜测是我没有正确设置阈值并尝试不同的值而没有成功.


这是我的代码:
#include "cv.h"
#include "highgui.h"
using namespace cv;
const int low_threshold = 50;
const int high_threshold = 150;
int main()
{
IplImage* newImg;
IplImage* grayImg;
IplImage* cannyImg;
newImg = cvLoadImage("ocv.bmp",1);
grayImg = cvCreateImage( cvSize(newImg->width, newImg->height), IPL_DEPTH_8U, 1 );
cvCvtColor( newImg, grayImg, CV_BGR2GRAY );
cannyImg = cvCreateImage(cvGetSize(newImg), IPL_DEPTH_8U, 1);
cvCanny(grayImg, cannyImg, low_threshold, high_threshold, 3);
cvNamedWindow ("Source", 1);
cvNamedWindow ("Destination",1);
cvShowImage ("Source", newImg );
cvShowImage ("Destination", cannyImg );
cvWaitKey(0);
cvDestroyWindow ("Source" );
cvDestroyWindow ("Destination" );
cvReleaseImage (&newImg );
cvReleaseImage (&grayImg …Run Code Online (Sandbox Code Playgroud) int dArray[1600][32];
vector < vector <int> > dVector;
n= 1600; k = 32
dVector.resize(n);
for(int i = 0 ; i < n ; ++i){
dVector[i].resize(k);
}
std::copy ( dArray, dArray + tmp_c, std::back_inserter (dVector));
Run Code Online (Sandbox Code Playgroud)
我如何使用std :: copy(或任何其他函数)将多维数组复制到向量,反之亦然?
我最近从 Dev-c++ 迁移到 Visual C++ 2010,发现它在各个方面都好得多,但只有一个方面。当我在 Dev-c++ 中编译并执行代码并best-optimization切换选项时,编译时间大大减少,几乎减少了一半 ( mingw32),但我似乎无法在 Visual C++ 2010 中找到任何优化选项。我怎么知道编译器优化代码?
我的程序中有大约50个文件需要打开才能读取,我将所有这些文件从1.txt重命名为50.txt,希望我可以通过循环增加文件编号来传递文件名,但我不知道如何/不认为可以将整数传递给char或是否有更好的方法来解决我的情况.
char* filename = "";
for(int i =0; i < 50; i++)
{
if(i == 0){filename = "0.txt";}
if(i == 1){filename = "1.txt";} // ..
int num = 0, theinteger = 0;
ifstream in(filename, ios::binary);
unsigned char c;
while( in.read((char *)&c, 1) )
{
in >> theinteger;
sca.chac[num]=theinteger;
num++;
}
}
return 0;
Run Code Online (Sandbox Code Playgroud) 我将主函数中的所有变量成员组合在一起,并创建了一些结构,以使其更有组织性且不那么复杂。我的问题是,我不再像以前那样传递各个函数的特定参数,而是将具有巨大数组大小的整个结构传递到每个函数中。我想知道它是否会影响性能,如果是的话,有更好的方法。
const int ard = 4096;
const int are = 8192;
const int ars = 64;
struct DataStructure_init {
int main_seq[are][24];
int main_seq2[are][24];
int main_seq3[are][24];
int main_lim[arc];
int cou[ars][16];
int gx[ars][32];
int sx[ars][32];
int col[ars];
int sol[ars];
int mix[ars];
int max[ars];
int hig[ars];
int save[are];
int list[are];
int lis[are];
int li;
int mark;
int fth[16];
...
};
struct DataStructure_trus {
...
};
DataStructure_trus va;
DataStructure_init in;
int fpre (DataStructure_trus va,DataStructure_init& in);
int ftrus (DataStructure_trus& va);
int fseries(DataStructure_trus& va);
int ftcs …Run Code Online (Sandbox Code Playgroud) c++ ×8
arrays ×2
opencv ×2
vector ×2
algorithm ×1
c ×1
function ×1
optimization ×1
text-files ×1