用split函数进行HSV 通道分离的时候,没有正常的分离为3通道?
opencv吧
全部回复
仅看楼主
level 9
舟prince 楼主
用split函数进行HSV 通道分离的时候,没有正常的分离为3通道:函数如下:
cvtColor(src, src_hsv, CV_BGR2HSV);
std::vector<cv::Mat> hsvSplit;
split(src_hsv, hsvSplit);
其中,hsvSplit被分离为 hsvSplit = { size=19847432332 }!!!!!这是为什么,size不应该是3吗
2018年01月08日 08点01分 1
level 9
Mat temp[3] split(src,temp)
2018年01月08日 16点01分 2
这样倒是可以,不过最后还要用到merge合并,合并的时候又出错了,竟然将结果图像合并成了一个1*n的矩阵,大神知道该怎么解决吗?【我在realease下没问题,在debug下就不行了】
2018年01月09日 03点01分
还有我用的OpenCV3.1.0
2018年01月09日 03点01分
@舟prince 把debug下的lib改一下,opencv_world310d.lib
2018年01月09日 03点01分
level 9
舟prince 楼主
debug下用的opencv_world310d.lib不行,然后改为opencv_world310.lib就行了,不合理啊? @ 为了理想奋斗♬
2018年01月09日 05点01分 3
level 9
舟prince 楼主
2018年01月09日 05点01分 4
level 9
出现编译错误还是运行错误
2018年01月09日 05点01分 5
编译没错,就是内存的错
2018年01月09日 06点01分
level 9
舟prince 楼主
这么说吧,在debug下,我定义vector<cv::Mat> hsvSplit;,用spilt进行分割时,分割出来的hsvSplit 的size=19847432332(这个值不确定),而最终结果本来应该是3.然后我改为定义Mat hsvSplit[3],这时用spilt进行分割时没有错,但是用merge进行合并时merge函数的参数输入 不对(无论我怎么试,输入参数都不对)
这时,我又定义了一个vector<cv::Mat> hsvSplit1(3),然后将Mat hsvSplit[3]分别赋给hsvSplit1[3],然后用merge进行合并,但此时出现内存错误。
(注:我试了,无论在debug和realease哪个模式下,只要链接库为opencv_world310.lib就行,但是只要是opencv_world310d.lib就不行,你说奇怪不奇怪)
@为了理想奋斗♬
2018年01月09日 06点01分 6
level 9
舟prince 楼主
还有,这个函数是我在另一个大的开源程序上摘抄下来的,配置一样,那个开源函数用opencv_world310d.lib就可以,这说明不是opencv版本的问题。程序应该也没问题,毕竟就这几句话。
你有什么好的建议吗?
@为了理想奋斗♬
2018年01月09日 06点01分 7
1