关于 delphi opencv 的问题

xfimage 2018-08-13 10:15:23
就一个简单的直方图对比,c++中 很简单的东西,翻译到delphi就报错!
HistogramBins :=256;
setlength(HistogramRange1,2);
HistogramRange1[0]:=0;
HistogramRange1[1]:=255;
setlength(HistogramRange,1);
HistogramRange[0]:=@HistogramRange1[0];

if image1.nChannels<>1 then
begin
srcImage := cvCreateImage(cvSize(image1.width, image1.height), image1.depth, 1);
cvCvtColor(image1, srcImage, CV_BGR2GRAY);
end
else
srcImage := image1;

if image2.nChannels<>1 then
begin
targetImage := cvCreateImage(cvSize(image2.width, image2.height), image2.depth, 1);
cvCvtColor(image2, targetImage, CV_BGR2GRAY);
end
else
srcImage := image2;

//下面出现问题了

Histogram1:=cvCreateHist(1,@HistogramBins,CV_HIST_ARRAY,HistogramRange);
//问题出在 这里, 报错 e06d7363
cvCreateHist(1,@HistogramBins,CV_HIST_ARRAY,HistogramRange);
//如果这样 不给 Histogram1 赋值就不报错。
...全文
527 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueStorm 2018-08-14
  • 打赏
  • 举报
回复
把Histogram1:=cvCreateHist(1,@HistogramBins,CV_HIST_ARRAY, HistogramRange)
其中的HistogramRange改为@HistogramRange[0]试试。
HistogramRange是动态数组,HistogramRange的数据起始的指针是@HistogramRange[0],不是HistogramRange
xfimage 2018-08-13
  • 打赏
  • 举报
回复
其中

if image1.nChannels<>1 then
begin
srcImage := cvCreateImage(cvSize(image1.width, image1.height), image1.depth, 1);
cvCvtColor(image1, srcImage, CV_BGR2GRAY);
end
else
srcImage := image1;

if image2.nChannels<>1 then
begin
targetImage := cvCreateImage(cvSize(image2.width, image2.height), image2.depth, 1);
cvCvtColor(image2, targetImage, CV_BGR2GRAY);
end
else
srcImage := image2;

这段代码 没用,贴的时候 没注意
xfimage 2018-08-13
  • 打赏
  • 举报
回复
var Histogram1 :pCvHistogram; 这样定义的
BlueStorm 2018-08-13
  • 打赏
  • 举报
回复
cvCreateHist返回的是指针, Histogram1的定义你没有给出,估计不是指针吧?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧