我正在尝试编写一个prolog程序,它需要有一个谓词,每次调用时都返回最小变量.但我需要这样一种方式,即如果你产生函数,它应该返回下一个最小值.例如:
min([5,3,2,7],B).
B = 2 ;
B = 3 ;
B = 5 ;
B = 7 ;
false.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个使用 openCV 2.4.10 在 Visual Studio 2010 中编写的简单代码,它从某些输入文件中提取一些功能。
Mat extractSIFT(Mat img)
{
cv::Ptr<cv::FeatureDetector> detector;
cv::Ptr<cv::Feature2D> descriptorExtractor;
detector = cv::FeatureDetector::create("Dense");
descriptorExtractor = cv::DescriptorExtractor::create("SIFT");
detector->set("initXyStep",GRID_SPACING);
vector<cv::KeyPoint> keypoints;
detector->detect(img,keypoints);
Mat o;
//Mat o(keypoints.size(),128,CV_8U);
descriptorExtractor->compute(img,keypoints,o);
return o;
}
Run Code Online (Sandbox Code Playgroud)
尽管此代码在调试模式下工作正常(尽管很慢),但它给出了以下错误:
Windows 在 Prototype.exe 中触发了断点。
这可能是由于堆损坏造成的,这表明 Prototype.exe 或其加载的任何 DLL 中存在错误。
这也可能是由于用户在 Prototype.exe 获得焦点时按了 F12。
输出窗口可能有更多诊断信息。
经过进一步调查,我发现输出变量 o 在发布模式(悬停在上方)下看不到,但可以在简单的控制台转储上打印值。
在反汇编程序中:
848: //Mat o(keypoints.size(),128,CV_8U);
849: descriptorExtractor->compute(img,keypoints,o);
850:
851: return o;
013F6FCF 56 push esi
013F6FD0 8D 55 C0 lea edx,[keypoints]
013F6FD3 52 push edx
013F6FD4 8D 45 0C …Run Code Online (Sandbox Code Playgroud) 假设我有一个对象obj,其中包含一些变量.我想要做的是添加一个新变量,它具有我给出的名称作为参数.例如:
var obj=
{
number:8
}
function AddField(field_name,obj)
{
//some magical code here
}
Run Code Online (Sandbox Code Playgroud)
如果我打电话
AddField('name',obj);
Run Code Online (Sandbox Code Playgroud)
我希望能够做到
obj.name='Apple'
Run Code Online (Sandbox Code Playgroud)
在调用此函数后.
有任何想法吗?